importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.rendering.PDFRenderer;importcom.lowagie.text.pdf.PdfReader;public classtest1 {public static voidmain(String[] args) {
pdf2Image("D:/1.pdf", "D:/pdf", 130);
}/***
* PDF文件转PNG图片,全部页数
*
*@paramPdfFilePath pdf完整路径
*@paramimgFilePath 图片存放的文件夹
*@paramdpi dpi越大转换后越清晰,相对转换速度越慢
*@return
*/
public static void pdf2Image(String PdfFilePath, String dstImgFolder, intdpi) {
File file= newFile(PdfFilePath);
PDDocument pdDocument;try{
String imgPDFPath=file.getParent();int dot = file.getName().lastIndexOf('.');
String imagePDFName= file.getName().substring(0, dot); //获取图片文件名
String imgFolderPath = null;if (dstImgFolder.equals("")) {
imgFolderPath= imgPDFPath + File.separator + imagePDFName;//获取图片存放的文件夹路径
} else{
imgFolderPath= dstImgFolder + File.separator +imagePDFName;
}if(createDirectory(imgFolderPath)) {
pdDocument=PDDocument.load(file);
PDFRenderer renderer= newPDFRenderer(pdDocument);/*dpi越大转换后越清晰,相对转换速度越慢*/PdfReader reader= newPdfReader(PdfFilePath);int pages =reader.getNumberOfPages();
StringBuffer imgFilePath= null;for (int i = 0; i < pages; i++) {
String imgFilePathPrefix= imgFolderPath + File.separator +imagePDFName;
imgFilePath= newStringBuffer();
imgFilePath.append(imgFilePathPrefix);
imgFilePath.append("_");
imgFilePath.append(String.valueOf(i+ 1));
imgFilePath.append(".png");
File dstFile= newFile(imgFilePath.toString());
BufferedImage image=renderer.renderImageWithDPI(i, dpi);
ImageIO.write(image,"png", dstFile);
}
System.out.println("PDF文档转PNG图片成功!");
}else{
System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");
}
}catch(IOException e) {
e.printStackTrace();
}
}private static booleancreateDirectory(String folder) {
File dir= newFile(folder);if(dir.exists()) {return true;
}else{returndir.mkdirs();
}
}
}