Java | 将PDF文件转换成PNG图片

有这样一个业务场景:需要在 WEB 页面中浏览 PDF 文件,PDF 文件存储在 FTP 服务器上,即 PDF 文件对外提供的访问地址的协议是 ftp 的 。有如下几个硬条件、软需求的要求:

  • WEB 页面本身的可视区域不是很大;
  • 不想弹出对话框展示 PDF 文件;
  • 谷歌浏览器不支持在 http 协议的页面里内嵌 ftp 协议的路径;
  • 在 WEB 页面中使用系统默认的 PDF 阅读器的体验不是很好,滚动条啦,边框啦 。
【Java | 将PDF文件转换成PNG图片】总之,很复杂吧 。
最后考虑到 WEB 页面展示图片比较方便,就想到了“将 PDF 文件转换成 PNG 图片”这种方案 。
下面是将 PDF 文件转换成 PNG 图片的示例代码 。
  1. Maven 依赖
org.apache.pdfboxpdfbox2.0.24
  1. Demo 示例
// 加载PDF文件File file = new File("D:/deploy.pdf");PDDocument document = PDDocument.load(file);// Instantiating the PDFRenderer classPDFRenderer renderer = new PDFRenderer(document);int number = document.getNumberOfPages();List images = Lists.newArrayList();// PDF文件总高度int sumHeight = 0;int width = 0;for (int i = 0; i < number; i) {// 渲染图片BufferedImage image = renderer.renderImageWithDPI(i, 300, ImageType.RGB);sumHeight= image.getHeight();int imageWidth = image.getWidth();if (imageWidth > width) {width = imageWidth;}images.add(image);}// 需要生成的图片BufferedImage newImage = new BufferedImage(width, sumHeight, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = newImage.createGraphics();g2.setBackground(Color.WHITE);g2.setColor(Color.BLACK);g2.fillRect(0, 0, width, sumHeight);int y = 0;for (int i = 0; i < images.size(); i) {g2.drawImage(images.get(i), null, 0, y);y= images.get(i).getHeight();}g2.dispose();// 将图片保存到文件ImageIO.write(newImage, "PNG", new File("D:/deploy-multiple.jpg"));// 关闭文档document.close();
转换的图片:
Java | 将PDF文件转换成PNG图片




相关经验推荐