前言
使用wps自带的转换工具,需要花钱,不花钱的话还带水印。于是,使用java程序将pdf转换为图片。
代码
依赖
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.4</version>
</dependency>
</dependencies>
方法
/**
* 转换全部的pdf
* @param pdfFile 需要转换的pdf文件
* @param fileAddress 图片文件保存地址
* @param filename 图片文件名
* @param type 图片类型
*/
private static void pdf2png(File pdfFile,String fileAddress,String filename,String type){
try {
PDDocument doc = PDDocument.load(pdfFile);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
for (int i = 0; i < pageCount; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, 144);
ImageIO.write(image,type,new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 指定转换页数
* @param pdfFile 需要转换的pdf文件
* @param fileAddress 图片文件保存地址
* @param filename 图片文件名
* @param type 图片类型
* @param startIndex 起始页
* @param endIndex 结束页
*/
private static void pdf2png(File pdfFile,String fileAddress,String filename,String type,int startIndex,int endIndex){
try {
PDDocument doc = PDDocument.load(pdfFile);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
for (int i = startIndex; i < endIndex; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, 144);
ImageIO.write(image,type,new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
}
} catch (IOException e) {
e.printStackTrace();
}
}
测试结果
public static void main(String[] args) {
File file = new File("D:\\BaiduNetdiskDownload\\JOJO彩色版第3部:星尘斗士_15.pdf");
pdf2png(file,"D:\\BaiduNetdiskDownload\\JOJO","image","png",92,100);
}
pdf格式
转换后