【Java实现PDF文件转换为图片】
目录
- 一、实现功能及开发环境描述
- 1、实现功能
- 2、开发环境
- 二、代码实现
- 1、引入pom依赖
- 2、前端页面
- 3、控制层接口
- 4、PDF工具类
一、实现功能及开发环境描述
1、实现功能
上传PDF文件后,将每页的PDF页面转换为指定格式的图片文件,并将 PDF文件及图片保存到指定的本地磁盘路径。
2、开发环境
此处描述的开发环境并非都为必要条件,仅作为参考,方便其他开发人员排查因版本不同出现的问题。
Windows10-64位
JDK-1.8
Maven-3.3.9
数据库:Oracle Database 19c
二、代码实现
1、引入pom依赖
pom.xml
<!--icepdf,用来将pdf文件转换为图片的依赖--><dependency><groupId>org.icepdf.os</groupId><artifactId>icepdf-core</artifactId><version>6.2.2</version></dependency>
2、前端页面
pdf2pic.html
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg"><form class="form-horizontal m-t" id="signupForm" enctype="multipart/form-data"><div class="form-group"><div class="col-sm-4" nowrap ><input name="picture" id="picture" type="file" placeholder="请选择PDF文件" onchange="allowFileType()" /></div><div class="col-sm-4 col-sm-offset-3"><button type="submit" class="btn btn-primary">提交</button></div></div></form>
</body>
<script type="text/javascript" src="/pdf2pic.js"></script>
</html>
pdf2pic.js
$.validator.setDefaults({//拦截表单验证成功后的提交表单事件,执行完函数中的代码在提交表单submitHandler : function() {save();}
});
function save() {/**
* 使用FormData表单提交解决serialize不能提交表单中file类型的数据
*/$.ajax({type : "POST",url : "/save",data :new FormData(document.getElementById('signupForm')),// data :new FormData($('#picture')),processData: false,contentType: false,async: false,cache: false, //上传文件不需要缓存error : function(request) {parent.layer.alert("Connection error");},success : function(data) {if (data.code == 0) {parent.layer.msg("操作成功");parent.reLoad();var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引parent.layer.close(index);} else {parent.layer.alert(data.msg)}}});
}
3、控制层接口
pdf2picController.java
@Log("将pdf转为图片并保存pdf和图片")@ResponseBody@PostMapping("/save")public void save(@RequestParam("picture") MultipartFile pdf) throws Exception {ImageUtils.pdfToImage(pdf);}
4、PDF工具类
PDFUtils
/*** @description: PDF转换为图片的工具类*/
@Component
public class ImageUtils {//图片文件格式public static final String FORMAT_NAME = "png";//图片文件后缀名public static final String PNG_SUFFIX = ".png";//用于将PDF文件转换为图片文件并保存到本地public static void pdfToImage(MultipartFile file) throws Exception {//1、pdf文件保存到本地String fileName = pdf.getOriginalFilename();fileName = FileUtil.renameToUUID(fileName);FileUtil.uploadFile(pdf.getBytes(), simpleDemoConfig.getUploadPath(), fileName);//2、将图片文件保存到本地Document document = new Document();document.setByteArray(pdf.getBytes(), 0, pdf.getBytes().length, fileName);for (int i = 0; i < document.getNumberOfPages(); i++) {//将磁盘中的图片读取到内存的图像缓冲区中BufferedImage image = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN,Page.BOUNDARY_CROPBOX, 0F, 2.5F);//创建一个后缀名为.png的File对象用于保存图片文件File imageFile = new File( UUID.randomUUID() + "-" + (i + 1) + PNG_SUFFIX);//将内存中的图片写入File对象ImageIO.write(image,FORMAT_NAME , imageFile);image.flush();//将File类型转为MultipartFile类型,用于将图片保存到本地文件夹InputStream inputStream = new FileInputStream(imageFile);MultipartFile imgMultipartFile = new MockMultipartFile(imageFile.getName(), inputStream);//将图片保存到本地String imageName = imgMultipartFile.getName();FileOutputStream out = new FileOutputStream(simpleDemoConfig.getUploadPath() + imageName);out.write(imgMultipartFile.getBytes());out.flush();out.close();}document.dispose();}
}/*simpleDemoConfig.getUploadPath()路径说明(此处也可直接写入String类型指定路径,以下注释则可忽略)simpleDemoConfig为配置类SimpleDemoConfig的实例@Component@ConfigurationProperties(prefix="config")public class SimpleDemoConfig {private String uploadPath;public String getUploadPath() {return uploadPath;}}实际路径写在application.yml配置文件中config:uploadPath: E:/var/uploaded_files/ */
参考资料:
Java实现PDF文件转换为图片(将图片进行压缩下载)
将File转换成MultipartFile
限于作者水平,如有错误,欢迎批评指正
【Java实现PDF文件转换为图片】相关推荐
- 使用java实现pdf文件转换为jpg或者png(可以批量操作、分类存放)
使用java实现pdf文件转换为jpg或者png(可以批量操作) 使用java代码实现将pdf转换为图片格式.支持归类,支持pdf多页分页面转换存放. 需求背景:有几百个文件夹,每个文件夹里有两个pd ...
- Java实现pdf文件转图片
Java实现pdf文件转图片 文章顺序是按照测试类- -Service- -Service实现类- -工具类- - POM依赖. test测试类里 pdfPath:存放pdf源文件的地方 imgflo ...
- java pdf 转换 word_如何使用Java将pdf文件转换为word文件
如何使用Java将pdf文件转换为word文件? 而且,它看起来像它一样容易吗? 解决方法: public class PDFTextReader { static String pdftoText( ...
- PDFBox操作pdf文件转换为图片
我是如何接触到PDFBox的 疫情期间,周末在家老实呆着,女友在学法律,但女友学习法律的pdf文件资料里每页都有一些类似培训机构联系方式的一些文字,共三四百页,用普通的编辑软件删除不了,如果要删除的话 ...
- Java实现PDF文件转图片(支持单页和多页)
目录 一.背景 二.maven环境 2.1.依赖 2.2.插件 三.PDF工具类 四.实践 4.1.单页PDF形式的发票转为图片 4.2.多页PDF文档转为图片 结语 一.背景 很多小伙伴们不知道 ...
- java获取pdf文件首页图片,用来当做封面
目录 1.Maven依赖 2.代码 3.执行结果 4.图片效果 1.Maven依赖 <dependency><groupId>org.apache.pdfbox</gro ...
- java 生成pdf文件,添加图片
所需要的包: 1. iText 下载地址: http://nchc.dl.sourceforge.net/sourceforge/itext/itext-2.0.3.jar 2. iTex ...
- Cannot resolve javax.media:jai_core:1.1.3(pdf文件转换为图片的依赖出错)
最近我在使用java完成pdf转图片时需要用到一个依赖是 但是导入时缺报错了!说Cannot resolve javax.media:jai_core:1.1.3 这里我也找到了解决方案,在这里教大家 ...
- 将PDF文件转换为高质量的图片:免费的在线PDF转换器
在现代社会中,PDF文档是非常常见的一种文档格式.但是,在某些情况下,我们需要将PDF文件转换为高质量的图片,以方便分享和展示.本文将介绍几款免费的在线PDF转换器,帮助您将PDF文件快速.简单地转换 ...
- php生成图片文件流,php如何将base64数据流文件转换为图片文件?
2017-03-07 在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片. 也就是说 ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一 ...
最新文章
- 遥遥无期还是近在咫尺?长文展望「大模型」商业化前景
- 使用DX 一些知识点整理(随时添加)
- Ruby学习笔记_索引贴
- iOS面试知识点梳理
- 给 asp.net core 写一个简单的健康检查
- 保存时间 默认_一些不起眼但又非常的实用的PPT制作技巧,大大节省PPT制作时间...
- android设置高德的3d,高德地图3D版的使用方法
- 从折叠屏到AR 三星Galaxy新品预热宣传片大招频现
- 1.3、TetGen网格化过程之描述
- 【最新砍价小程序源码】
- sketchup生成面域插件_适用于Revit / SketchUp / Rhino / ArchiCAD插件最新版
- CTPN在windows的CPU上运行经验
- 偏移量范围计算机组成,计算机组成原理-郑秋梅 - 习题
- 基于蚁群算法的MTSP问题
- Excel怎么随机生成偶数
- 计算机右键管理删除,【win7右键菜单管理】右键菜单的设置及清除
- Hibernate VS iBATIS (转自ITEYE davy)
- windows中用注册表删除guest账户
- 错误: 对象不支持“attachEvent”属性或方法
- python 下载 JPG 图片
热门文章
- tinder和bumble_发布课程:Tinder,Reddit,Airbnb,Etsy和Uber如何吸引了第一批用户
- linux复制压缩包到另一个文件夹,linux复制文件到另一个文件夹或目录
- 全国省市县json数据
- 全志A64 Android6.0编译
- If you already have a 64-bit JDK installed 解决方法
- boost电路输出电流公式_boost电感电流计算
- 数据治理——主数据项目实施
- libcef--在windows或者linux上创建一个简单的应用程序
- unity点击按钮跳转页面
- linux centos 光盘修复,CentOS 系统修复