这篇文章将介绍如何在Java应用程序中将PDF文件转换为图片以及将图片转换为PDF文件。
使用组件:
Free Spire.PDF for JAVA
Free Spire.PDF for JAVA是一款完全免费的PDF Java组件,开发人员可以使用它在Java应用程序中进行创建PDF、读取PDF和保存PDF等操作,并且无需安装Adobe Acrobat。
在使用以下代码前,你需要下载Free Spire.PDF for JAVA包并解压缩,然后从lib文件夹下,导入Spire.Pdf.jar包和Spire.Common.jar包到你的Java应用程序中。
PDF转图片
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.spire.pdf.PdfDocument;
public class PDFToImage {
public static void main(String[] args) throws IOException {
//加载PDF文件
PdfDocument doc = new PdfDocument();
doc.loadFromFile("ToImage.pdf");
//保存PDF的每一页到图片
BufferedImage image;
for (int i = 0; i < doc.getPages().getCount(); i++) {
image = doc.saveAsImage(i);
File file = new File( String.format("ToImage-img-%d.png", i));
ImageIO.write(image, "PNG", file);
}
doc.close();
}
}
PDF文件:
生成图片:
图片转PDF
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
public class ImageToPDF {
public static void main(String[] args) {
//创建PDF文档
PdfDocument doc = new PdfDocument();
//添加一个页面
PdfPageBase page = doc.getPages().add();
//加载图片
PdfImage image = PdfImage.fromFile("ImageToPDF.png");
//绘制图片到PDF并设置其在PDF文件中的位置和大小
float widthFitRate = getImgWidth(new File("ImageToPDF.png"))/ page.getActualBounds(true).width;
float heightFitRate = getImgHeight(new File("ImageToPDF.png"))/ page.getActualBounds(true).height;
float fitRate = Math.max(widthFitRate, heightFitRate);
float fitWidth = getImgWidth(new File("ImageToPDF.png")) / fitRate*0.8f;
float fitHeight = getImgHeight(new File("ImageToPDF.png"))/ fitRate*0.8f;
page.getCanvas().drawImage(image, 50, 30, fitWidth, fitHeight);
//保存并关闭
doc.saveToFile("ImageToPDF.pdf");
doc.close();
}
/**
* @param ImageFile
* @return image width
*/
public static int getImgWidth(File ImageFile) {
InputStream is = null;
BufferedImage src = null;
int ret = -1;
try {
is = new FileInputStream(ImageFile);
src = javax.imageio.ImageIO.read(is);
ret = src.getWidth(null);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* @param ImageFile
* @return image height
*/
public static int getImgHeight(File ImageFile) {
InputStream is = null;
BufferedImage src = null;
int ret = -1;
try {
is = new FileInputStream(ImageFile);
src = javax.imageio.ImageIO.read(is);
ret = src.getHeight(null);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
}
图片:
生成PDF文件: