将PDF文件转换成PNG图片

简介: 有这样一个业务场景:需要在 WEB 页面中浏览 PDF 文件,PDF 文件存储在 FTP 服务器上,即 PDF 文件对外提供的访问地址的协议是 ftp 的。有如下几个硬条件、软需求的要求:- WEB 页面本身的可视区域不是很大;- 不想弹出对话框展示 PDF 文件;- 谷歌浏览器不支持在 http 协议的页面里内嵌 ftp 协议的路径;- 在 WEB 页面中使用系统默认的 PDF 阅读器的体验不是很好,滚动条啦,边框啦。

将一个多页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();
目录
相关文章
|
1月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
124 0
|
23天前
|
数据安全/隐私保护 Python Windows
三种方法,Python轻松提取PDF中全部图片
三种方法,Python轻松提取PDF中全部图片
|
22天前
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
1月前
|
JSON JavaScript 数据格式
打印插件 hiprint 使用、回单打印PDF保存本地、将列表数据打印成pdf文件保存到本地
这篇文章介绍了如何使用hiprint打印插件将列表数据打印成PDF文件并保存到本地,包括插件的配置、依赖安装、项目代码案例以及如何预览和打印数据。
打印插件 hiprint 使用、回单打印PDF保存本地、将列表数据打印成pdf文件保存到本地
|
1月前
|
Python
Python——将PPT和Word转为PDF文件
Python——将PPT和Word转为PDF文件
36 1
|
20天前
|
C# 开发者 Windows
WPF与PDF文档:解锁创建和编辑PDF文件的新技能——从环境配置到代码实践,手把手教你如何在WPF应用中高效处理PDF,提升文档管理效率
【8月更文挑战第31天】随着数字文档的普及,PDF因跨平台兼容性和高保真度成为重要格式。WPF虽不直接支持PDF处理,但借助第三方库(如iTextSharp)可在WPF应用中实现PDF的创建与编辑。本文通过具体案例和示例代码,详细介绍了如何在WPF中集成PDF库,并展示了从设计用户界面到实现PDF创建与编辑的完整流程。不仅包括创建新文档的基本步骤,还涉及在现有PDF中添加页眉页脚等高级功能。通过这些示例,WPF开发者可以更好地掌握PDF处理技术,提升应用程序的功能性和实用性。
36 0
|
1月前
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
66 0
|
3月前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
|
1月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
54 3
Python PDF文件转Word格式,只需要3秒(附打包)
|
1月前
|
Python
Python——批量将PDF文件转为图片
Python——批量将PDF文件转为图片
29 2

热门文章

最新文章