将pdf文档转换成高清图片
关于pdf转换成高清图片,网上有不少资料,但测试过后发现多数不可用,甚至出现pdf图片格式错乱等问题。
以下pdf转高清图片核心代码是经过本人验证并应用与实践项目的。请惠存!
File file = new File(pdfPath);
PDDocument pdDocument;
try {
pdDocument = PDDocument.load(file);
List<PDPage> pdPages = pdDocument.getDocumentCatalog().getAllPages();
/* dpi越大转换后越清晰,相对转换速度越慢 */
List<File> files = new ArrayList<>();
for (int i = 0; i < pdDocument.getNumberOfPages(); i++) {
PDPage page = pdPages.get(i);
String imagePath = pdfPath.replace(".pdf", "") + "_" + i + ".png";
File dstFile = new File(imagePath);
//300 是缩放比例,可调整,数值越高转换越慢
BufferedImage image = page.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
ImageIO.write(image, "png", dstFile);
files.add(dstFile);
}
//TODO 到此我们已经将pdf文档按页拆分成高清的pdf文件,如果业务有需要可以将所有的图片整合成一张图片
System.out.println("PDF文档转PNG图片成功!");
} catch (IOException e) {
e.printStackTrace();
}