目录

  • 一、实现功能及开发环境描述
    • 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文件转换为图片】相关推荐

  1. 使用java实现pdf文件转换为jpg或者png(可以批量操作、分类存放)

    使用java实现pdf文件转换为jpg或者png(可以批量操作) 使用java代码实现将pdf转换为图片格式.支持归类,支持pdf多页分页面转换存放. 需求背景:有几百个文件夹,每个文件夹里有两个pd ...

  2. Java实现pdf文件转图片

    Java实现pdf文件转图片 文章顺序是按照测试类- -Service- -Service实现类- -工具类- - POM依赖. test测试类里 pdfPath:存放pdf源文件的地方 imgflo ...

  3. java pdf 转换 word_如何使用Java将pdf文件转换为word文件

    如何使用Java将pdf文件转换为word文件? 而且,它看起来像它一样容易吗? 解决方法: public class PDFTextReader { static String pdftoText( ...

  4. PDFBox操作pdf文件转换为图片

    我是如何接触到PDFBox的 疫情期间,周末在家老实呆着,女友在学法律,但女友学习法律的pdf文件资料里每页都有一些类似培训机构联系方式的一些文字,共三四百页,用普通的编辑软件删除不了,如果要删除的话 ...

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

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

  6. java获取pdf文件首页图片,用来当做封面

    目录 1.Maven依赖 2.代码 3.执行结果 4.图片效果 1.Maven依赖 <dependency><groupId>org.apache.pdfbox</gro ...

  7. java 生成pdf文件,添加图片

    所需要的包: 1.  iText    下载地址:  http://nchc.dl.sourceforge.net/sourceforge/itext/itext-2.0.3.jar 2.  iTex ...

  8. Cannot resolve javax.media:jai_core:1.1.3(pdf文件转换为图片的依赖出错)

    最近我在使用java完成pdf转图片时需要用到一个依赖是 但是导入时缺报错了!说Cannot resolve javax.media:jai_core:1.1.3 这里我也找到了解决方案,在这里教大家 ...

  9. 将PDF文件转换为高质量的图片:免费的在线PDF转换器

    在现代社会中,PDF文档是非常常见的一种文档格式.但是,在某些情况下,我们需要将PDF文件转换为高质量的图片,以方便分享和展示.本文将介绍几款免费的在线PDF转换器,帮助您将PDF文件快速.简单地转换 ...

  10. php生成图片文件流,php如何将base64数据流文件转换为图片文件?

    2017-03-07 在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片. 也就是说 ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一 ...

最新文章

  1. 遥遥无期还是近在咫尺?长文展望「大模型」商业化前景
  2. 使用DX 一些知识点整理(随时添加)
  3. Ruby学习笔记_索引贴
  4. iOS面试知识点梳理
  5. 给 asp.net core 写一个简单的健康检查
  6. 保存时间 默认_一些不起眼但又非常的实用的PPT制作技巧,大大节省PPT制作时间...
  7. android设置高德的3d,高德地图3D版的使用方法
  8. 从折叠屏到AR 三星Galaxy新品预热宣传片大招频现
  9. 1.3、TetGen网格化过程之描述
  10. 【最新砍价小程序源码】
  11. sketchup生成面域插件_适用于Revit / SketchUp / Rhino / ArchiCAD插件最新版
  12. CTPN在windows的CPU上运行经验
  13. 偏移量范围计算机组成,计算机组成原理-郑秋梅 - 习题
  14. 基于蚁群算法的MTSP问题
  15. Excel怎么随机生成偶数
  16. 计算机右键管理删除,【win7右键菜单管理】右键菜单的设置及清除
  17. Hibernate VS iBATIS (转自ITEYE davy)
  18. windows中用注册表删除guest账户
  19. 错误: 对象不支持“attachEvent”属性或方法
  20. python 下载 JPG 图片

热门文章

  1. tinder和bumble_发布课程:Tinder,Reddit,Airbnb,Etsy和Uber如何吸引了第一批用户
  2. linux复制压缩包到另一个文件夹,linux复制文件到另一个文件夹或目录
  3. 全国省市县json数据
  4. 全志A64 Android6.0编译
  5. If you already have a 64-bit JDK installed 解决方法
  6. boost电路输出电流公式_boost电感电流计算
  7. 数据治理——主数据项目实施
  8. libcef--在windows或者linux上创建一个简单的应用程序
  9. unity点击按钮跳转页面
  10. linux centos 光盘修复,CentOS 系统修复