Java实现PDF文件转图片(支持单页和多页) 您所在的位置:网站首页 如何把单张图片生成pdf长图 Java实现PDF文件转图片(支持单页和多页)

Java实现PDF文件转图片(支持单页和多页)

2024-07-11 07:55| 来源: 网络整理| 查看: 265

目录 一、背景二、maven环境2.1、依赖2.2、插件 三、PDF工具类四、实践4.1、单页PDF形式的发票转为图片4.2、多页PDF文档转为图片 结语

一、背景

  很多小伙伴们不知道怎么把PDF文件转成图片,并且网上的实例总是跑不通,因为很多小细节没有写出来。现在我给大家两个个完整的实例:单页PDF形式的发票转为图片和多页PDF文档转为图片。我这边采用的是springboot项目,JDK是1.8。具体的环境搭建和项目的创建我就不多说了,网上关于这些有很多的教程,请大家仔细查阅。

二、maven环境 2.1、依赖

本文主要以maven项目进行相关事例

org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test junit junit 4.12 compile org.apache.commons commons-lang3 3.12.0 org.apache.pdfbox pdfbox 2.0.23 bundle 2.2、插件

  很多小伙伴可能会依赖有问题,那是因为pdfbox的依赖类型为bundle,需要加载插件:把他放到标签下的里面,插件依赖如下:

org.apache.felix maven-bundle-plugin true 三、PDF工具类

PdfUtil.java

本工具类主要使用到apache的pdfbox和common-lang3实现(临时写的,异常处理就没有特别关注,主要在于怎么转换)

package com.alian.csdn.utils; import org.apache.commons.lang3.tuple.Pair; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class PdfUtil { /** * @param source 原文件 * @param desFilePath 生成图片的路径 * @param desFileName 生成图片的名称(多页文档时会变成:名称+下划线+从1开始的数字) * @param imageType 图片类型 * @return */ public static Pair pdfToImage(String source, String desFilePath, String desFileName, String imageType) { //通过给定的源路径名字符串创建一个File实例 File file = new File(source); if (!file.exists()) { return Pair.of(false, "文件不存在,无法转化"); } //目录不存在则创建目录 File destination = new File(desFilePath); if (!destination.exists()) { boolean flag = destination.mkdirs(); System.out.println("创建文件夹结果:" + flag); } PDDocument doc = null; try { //加载PDF文件 doc = PDDocument.load(file); PDFRenderer renderer = new PDFRenderer(doc); //获取PDF文档的页数 int pageCount = doc.getNumberOfPages(); System.out.println("文档一共" + pageCount + "页"); List fileList = new ArrayList(); for (int i = 0; i e.printStackTrace(); return Pair.of(false, "PDF转化图片异常"); } finally { try { if (doc != null) { doc.close(); } } catch (IOException e) { System.out.println("关闭文档失败"); e.printStackTrace(); } } } } 四、实践 4.1、单页PDF形式的发票转为图片 /** * 单页PDF形式的发票转为图片 * 此处单元测试的注解是采用:org.junit.Test */ @Test public void pdfInvoiceToImage() { String source = "C:\\myFile\\invoice\\加油发票.pdf"; String desFileName = "invoice"; String desFilePath = "C:\\myFile\\invoice"; String imageType = "png"; Pair pair = PdfUtil.pdfToImage(source, desFilePath, desFileName, imageType); System.out.println("PDF形式的发票转化为图片结果:" + pair.getLeft()); if (!pair.getLeft()) { System.out.println("" + pair.getRight()); } else { List fileList = (List) pair.getRight(); System.out.println("转化的文件的内容:"); fileList.forEach(System.out::println); } }

运行结果:

文档一共1页 单页PDF形式的发票转化为图片结果:true 转化的文件的内容: C:\myFile\invoice\invoice.png

在目标目录里PDF发票已经转成图片了,并且清晰度还可以,如果觉得不可以大家可以去调整工具类dpi的值。

在这里插入图片描述

4.2、多页PDF文档转为图片 /** * 多页PDF文档转为图片 * 此处单元测试的注解是采用:org.junit.Test */ @Test public void pdfDocumentToImage2() { String source = "C:\\myFile\\document\\阿里巴巴Java开发手册(终极版).pdf"; String desFileName = "阿里巴巴Java开发手册"; String desFilePath = "C:\\myFile\\document"; String imageType = "png"; Pair pair = PdfUtil.pdfToImage(source, desFilePath, desFileName, imageType); System.out.println("PDF文档转化为图片结果:" + pair.getLeft()); if (!pair.getLeft()) { System.out.println("" + pair.getRight()); } else { List fileList = (List) pair.getRight(); System.out.println("转化的文件的内容:"); fileList.forEach(System.out::println); } }

运行结果:

文档一共39页 PDF文档转化为图片结果:true 转化的文件的内容: C:\myFile\document\阿里巴巴Java开发手册_1.png C:\myFile\document\阿里巴巴Java开发手册_2.png C:\myFile\document\阿里巴巴Java开发手册_3.png C:\myFile\document\阿里巴巴Java开发手册_4.png C:\myFile\document\阿里巴巴Java开发手册_5.png C:\myFile\document\阿里巴巴Java开发手册_6.png C:\myFile\document\阿里巴巴Java开发手册_7.png C:\myFile\document\阿里巴巴Java开发手册_8.png C:\myFile\document\阿里巴巴Java开发手册_9.png C:\myFile\document\阿里巴巴Java开发手册_10.png C:\myFile\document\阿里巴巴Java开发手册_11.png C:\myFile\document\阿里巴巴Java开发手册_12.png C:\myFile\document\阿里巴巴Java开发手册_13.png C:\myFile\document\阿里巴巴Java开发手册_14.png C:\myFile\document\阿里巴巴Java开发手册_15.png C:\myFile\document\阿里巴巴Java开发手册_16.png C:\myFile\document\阿里巴巴Java开发手册_17.png C:\myFile\document\阿里巴巴Java开发手册_18.png C:\myFile\document\阿里巴巴Java开发手册_19.png C:\myFile\document\阿里巴巴Java开发手册_20.png C:\myFile\document\阿里巴巴Java开发手册_21.png C:\myFile\document\阿里巴巴Java开发手册_22.png C:\myFile\document\阿里巴巴Java开发手册_23.png C:\myFile\document\阿里巴巴Java开发手册_24.png C:\myFile\document\阿里巴巴Java开发手册_25.png C:\myFile\document\阿里巴巴Java开发手册_26.png C:\myFile\document\阿里巴巴Java开发手册_27.png C:\myFile\document\阿里巴巴Java开发手册_28.png C:\myFile\document\阿里巴巴Java开发手册_29.png C:\myFile\document\阿里巴巴Java开发手册_30.png C:\myFile\document\阿里巴巴Java开发手册_31.png C:\myFile\document\阿里巴巴Java开发手册_32.png C:\myFile\document\阿里巴巴Java开发手册_33.png C:\myFile\document\阿里巴巴Java开发手册_34.png C:\myFile\document\阿里巴巴Java开发手册_35.png C:\myFile\document\阿里巴巴Java开发手册_36.png C:\myFile\document\阿里巴巴Java开发手册_37.png C:\myFile\document\阿里巴巴Java开发手册_38.png C:\myFile\document\阿里巴巴Java开发手册_39.png

我们现在去目标目录查看文件是否已转化完成,从列表可以看到文档未丢失,并且清晰。

在这里插入图片描述 小伙伴们可以直接拷贝相关代码进行试验,赶紧行动起来吧。

结语

以上就是今天要讲的内容,本文简单介绍了使用pdfbox把pdf文件转换成图片,同时支持单页和多页PDF文件的转化,当然pdfbox是一个很强大的功能,我们这里只是用到最简单的处理,详细的使用还需要大家多多查看官方文档。如果有什么疑问,欢迎大家评论交流。如果觉得不错,可以帮忙一键三连,谢谢。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有