当前位置: 首页 > news >正文

pdf转图片【java版实现】

一、引入依赖

引入需要导入到项目中的依赖,如下所示:

        <!-- pdf转图片 --><dependency><groupId>net.sf.cssbox</groupId><artifactId>pdf2dom</artifactId><version>1.7</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-tools</artifactId><version>2.0.12</version></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>

二.编写工具类

pdf转图片的工具类如下所示,直接拷贝到项目即可

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;public class Pdf2Image {/*** 使用文件流整个pdf转换成图片* @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test* @param filename    PDF文件名不带后缀名* @param type        图片类型 png 、jpg*/public static List<Map<String, String>> pdfToImage(String fileAddress, String filename, String type) {long startTime = System.currentTimeMillis();List<Map<String, String>> list = new ArrayList<>();Map<String, String> resultMap = null;PDDocument pdDocument = null;String fileName = null;String imgPath = null;try {// 将文件地址和文件名拼接成路径 注意:线上环境不能使用\\拼接File FilePath = new File(fileAddress + "/" + filename + ".pdf");// 文件流FileInputStream inputStream = new FileInputStream(FilePath);int dpi = 296;pdDocument = PDDocument.load(inputStream);PDFRenderer renderer = new PDFRenderer(pdDocument);int pageCount = pdDocument.getNumberOfPages();/* dpi越大转换后越清晰,相对转换速度越慢 */for (int i = 0; i < pageCount; i++) {resultMap = new HashMap<>();fileName = filename + "_" + (i + 1) + "." + type;//注意:线上环境不能使用\\拼接imgPath = fileAddress + "/" + fileName;BufferedImage image = renderer.renderImageWithDPI(i, dpi);ImageIO.write(image, type, new File(imgPath));resultMap.put("fileName", fileName);resultMap.put("filePath", imgPath); // 图片路径list.add(resultMap);}long endTime = System.currentTimeMillis();System.out.println("共耗时:" + ((endTime - startTime) / 1000.0) + "秒");  //转化用时} catch (Exception e) {e.printStackTrace();} finally {try {// 这里需要关闭PDDocument,不然如果想要删除pdf文件时会提示文件正在使用,无法删除的情况pdDocument.close();} catch (IOException e) {e.printStackTrace();}}return list;}public static void main(String[] args) throws FileNotFoundException {List<Map<String, String>> maps = pdfToImage("D:\\tanzer\\template\\bwFckHotwork\\110100DW1646870094552236032", "FTEV动用明火审批表20230609192945", "jpg");System.out.println(maps);}
}

三.测试

执行工具类中的main方法就行,会将pdf文件转换成多张图片到同级目录中。

http://www.lryc.cn/news/118841.html

相关文章:

  • python3.6 安装pillow失败
  • 巨人互动|Meta海外户Meta的业务工具转化API
  • 【JAVA】包、权限修饰符、final关键字、常量、枚举、抽象类、接口
  • 6.s081/6.1810(Fall 2022)Lab5: Copy-on-Write Fork for xv6
  • 项目实战 — 消息队列(7){虚拟主机设计(2)}
  • 手把手教你快速实现内网穿透
  • 【Linux取经路】揭秘进程的父与子
  • iOS链式编程风格 -- 富文本字符串
  • 后端开发5.Redis的搭建
  • 推特群推王构建你的流量池
  • 【从零学习python 】12.Python字符串操作与应用
  • MongoDB创建用户 、数据库、索引等基础操作
  • Docker容器监控(Cadvisor +Prometheus+Grafana)
  • 家电用PCM板:市场现状研究分析与发展前景预测
  • 详解lambda表达式(一):表达式定义与异常处理
  • UE5、CesiumForUnreal接入WMTS格式地图瓦片,如ArcGIS、Mapbox、天地图
  • AI模型公司如何定位 ?
  • C#,OpenCV开发指南(01)
  • windows永久关闭更新
  • python类型转换笔记.python运算符笔记
  • 【CSS】背景图定位问题适配不同机型
  • 20 个实例玩转 Java 8 Stream
  • 局部变量数组和malloc申请的指针使用区别和注意事项
  • Springboot2.5.6整合Elasticsearch7.12.1完整示例
  • 全网超全,接口自动化测试-动态数据生成/替换数据(实战应用)
  • CRUD操作-select
  • SD-WAN网络加速及应用场景分析
  • python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝
  • eNSP:ospf和mgre的配置
  • 培训报名小程序-订阅消息发送