Springboot使用pdfbox提取PDF图片
- PDFBox的介绍
- Springboot集成PDFBox
- 一、提取pdf首页为图像
-
- 1. 实现需求
- 2. 项目代码
- 3. 执行结果
- 二、将pdf内容全部转换为图像
-
- 1. 实现需求
- 2. 项目代码
- 3. 执行结果
- 4.注意事项
-
- 1.优化项目代码
- 2.提升Java heap size
PDFBox的介绍
PDFBox是一个用于创建和处理PDF文档的Java库。它可以使用Java代码创建、读取、修改和提取PDF文档中的内容。
PDFBox的功能:
Extract Text - 使用PDFBox,您可以从PDF文件中提取Unicode文本。
Split & Merge - 使用PDFBox,您可以将单个PDF文件分成多个文件,并将它们合并为一个文件。
Fill Forms - 使用PDFBox,您可以在文档中填写表单数据。
Print - 使用PDFBox,您可以使用标准Java打印API打印PDF文件。
Save as Image - 使用PDFBox,您可以将PDF保存为图像文件,如PNG或JPEG。
Create PDFs - 使用PDFBox,您可以通过创建Java程序创建新的PDF文件,还可以包含图像和字体。
Signing - 使用PDFBox,您可以将数字签名添加到PDF文件。
Springboot集成PDFBox
本项目除了引入pdfbox的依赖之外,还引入了解决图像问题的其他依赖。
例如:jai-imageio-jpeg2000
和jai-imageio-core
是为了解决在转换图像时报错:Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed
jbig2-imageio
依赖引入是为了解决使用pdfbox2.0将PDF转换为图片时后台报Cannot read JBIG2 image: jbig2-imageio is not installed
错误
<!-- pdf提取封面依赖-->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId>
<version>3.0.2</version>
</dependency>
<!-- 解決提取pdf "Cannot read JPEG2000 image"封面失败问题 -->
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.3.0</version>
</dependency>
一、提取pdf首页为图像
1. 实现需求
单个或者批量提取pdf的首页作为封面,或者可以实现提取指定pdf页为图像
2. 项目代码
核心工具类方法:PdfUtils.getPdfFirstImage
package com.zhouquan.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
imp