今天主要说一下pdf的拆分与合影,pdf是在我们工作生活中很常见的一种文件格式,所以今天就pdf做一些研究。
**扩展:(下篇博客更新)**小伙伴们如果是做ocr的应该会更了解一些。比如单层pdf是不可以复制文字的,但是双层的pdf是可以复制文字的,所以想要做可复制的pdf的话就必须经过ocr进行处理。
话不多说: 先看技术,这次主要介绍pdfbox直接上代码。
第一步导入依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.8</version>
</dependency>
第二步实现功能:
/**
* 使用pdfbox工具实现将一个pdf文档按页拆分成图片
* @param pdfPath:待拆分的pdf文件
* @param jpgFolder:图片存放文件夹
* @return 拆分后的图片文件路径List
*/
public static List<String> pdf2jpg(String pdfPath, String jpgFolder) {
List<String> list = new ArrayList<String>();
File file = null;
PDDocument doc = null;
try {
file = new File(pdfPath);
doc = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(doc);
for (int i = 0; i < doc.getNumberOfPages(); i++) {
// 方式1,第二个参数是设置缩放比(即像素)
BufferedImage image = renderer.renderImageWithDPI(i, 250);//296
// 方式2,第二个参数是设置缩放比(即像素)
//BufferedImage image = renderer.renderImage(i, 2.0f); // 第二个参数越大生成图片分辨率越高,转换时间也就越长
String imagePath = jpgFolder + String.valueOf(i) + ".jpg";
ImageIO.write(image, "jpg", new File(imagePath));
list.add(imagePath);
}
} catch (IOException e) {
System.out.println("pdf拆分发生错误!!");
e.printStackTrace();
} finally {
if (doc != null) {
try {
doc.close();
} catch (IOException e) {
e.printStackTrace</