您的位置 首页 java

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

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

  • WEB 页面本身的可视区域不是很大;
  • 不想弹出对话框展示 PDF 文件;
  • 谷歌浏览器不支持在 http 协议的页面里内嵌 ftp 协议的路径;
  • 在 WEB 页面中使用系统默认的 PDF 阅读器的体验不是很好,滚动条啦,边框啦。

总之,很复杂吧。

最后考虑到 WEB 页面展示图片比较方便,就想到了“将 PDF 文件转换成 PNG 图片”这种方案。

下面是将 PDF 文件转换成 PNG 图片的示例代码。

  1. Maven 依赖
 <dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>  
  1. Demo 示例
 // 加载PDF文件
File file = new File("D:/deploy.pdf");
PDDocument document = PDDocument.load(file);
// Instantiating the PDFRenderer class
PDFRenderer renderer = new PDFRenderer(document);
int number = document.getNumberOfPages();
List<BufferedImage> 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图片

文章来源:智云一二三科技

文章标题:Java | 将PDF文件转换成PNG图片

文章地址:https://www.zhihuclub.com/177288.shtml

关于作者: 智云科技

热门文章

网站地图