工作中遇到需要把PDF文件转成图片使用,在此记录下,其中用到了三方JAR

package com.xxx.xxx.utils;import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** @author qingyu* @version 1.0* @date 2022/2/17 17:33*/
public class PdfConvertImg {public static void pdf2multiImage(String pdfFile, String outpath)throws PDFException, PDFSecurityException, IOException {InputStream is = new FileInputStream(pdfFile);List<BufferedImage> piclist = new ArrayList<BufferedImage>();Document document = new Document();document.setFile(pdfFile);float scale = 2.0f; // 缩放比例float rotation = 0f; // 旋转角度for (int i = 0; i < document.getNumberOfPages(); i++) {BufferedImage image = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN,Page.BOUNDARY_CROPBOX, rotation, scale);piclist.add(image);}document.dispose();yPic(piclist, outpath);is.close();}public static void yPic(List<BufferedImage> piclist, String outPath) throws IOException {// 纵向处理图片int height = 0, // 总高度_width = 0, // 临时宽度maxWidth = 0, // 最大宽度_height = 0, // 临时的高度 , 或保存偏移高度__height = 0, // 临时的高度,主要保存每个高度picNum = piclist.size();// 图片的数量int[] heightArray = new int[picNum]; // 保存每个文件的高度int[] widthArray = new int[picNum]; // 保存每个文件的宽度BufferedImage buffer = null; // 保存图片流List<int[]> imgRGB = new ArrayList<int[]>(); // 保存所有的图片的RGBint[] _imgRGB; // 保存一张图片中的RGB数据for (int i = 0; i < picNum; i++) {buffer = piclist.get(i);if (buffer.getWidth() > maxWidth) {// 获取最大宽度maxWidth = buffer.getWidth();}}for (int i = 0; i < picNum; i++) {buffer = piclist.get(i);heightArray[i] = _height = buffer.getHeight();// 图片高度widthArray[i] = _width = buffer.getWidth();// 图片宽度height += _height; // 获取总高度_imgRGB = new int[_width * _height];// 从图片中读取RGB_imgRGB = buffer.getRGB(0, 0, _width, _height, _imgRGB, 0, _width);imgRGB.add(_imgRGB);}_height = 0; // 设置偏移高度为0// 生成新图片BufferedImage imageResult = new BufferedImage(_width, height, BufferedImage.TYPE_INT_RGB);for (int i = 0; i < picNum; i++) {__height = heightArray[i];_width = widthArray[i];// if (i != 0) _height += heightArray[i-1]; // 计算偏移高度 ,若高度一致,则把此行打开if (i != 0)_height += heightArray[i - 1]; // 计算偏移高度 ,因高度不一致,所以i-1// imageResult.setRGB(0, _height, widthArray[i], __height, imgRGB.get(i), 0, widthArray[i]); // 写入流中// 居中,前两个参数为起始的宽度、高度imageResult.setRGB((maxWidth - _width) / 2, _height, _width, __height, imgRGB.get(i), 0, _width); // 写入流中}File outFile = new File(outPath);ImageIO.write(imageResult, "jpg", outFile);// 写图片}public static void main(String[] args) throws PDFSecurityException, PDFException, IOException {PdfConvertImg.pdf2multiImage("D:/home/user1/POSPPIC/AK1434726700369334272/creditInvestigation.pdf","D:/home/user1/POSPPIC/AK1434726700369334272/creditInvestigation.jpg");}
}

这个工具类的yPic方法为多找PDF文件转成一张长图片,一般PDF会有多页这个方法输入的为一张图片。网站限制下载必须要积分,已设置成最低1分方便大家使用!
JAR下载地址

JAVA PDF文件转图片相关推荐

  1. java pdf文件转换图片,pdf文件转图片(java实现)

    项目中pdf文件太大,在手机端打开缓慢.需要将pdf文件转换成图片.加载比较快,增加用户体验.话不多说,直接上干货. 一.在pom引入依赖的jar org.apache.pdfbox fontbox ...

  2. Java实现pdf文件转图片

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

  3. java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印

    接上一篇,pdf跟tif 是一起做的 java实现 1.给PDF文件添加图片水印: public static void waterMark1(String inputFile,String outp ...

  4. java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码

    最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解 ...

  5. 上传pdf文件转图片翻页小工具,遇到JSP form中type=file的文件上传及后台Part处理问题(后台取值为null)

    最近公司要求做一个上传pdf文件后将文件转换为翻页图片的小工具,我是这么做的 1.先找图片翻页的demo,微软有现有的产品turn.js感兴趣的可以自己看一下 ,有双页的有单页的,因为我司要求手机端使 ...

  6. pdf转图片 java_有将pdf文件转图片的格式方法吗?

    有时候我们为了方便传输,需要把图片转为PDF的格式,因为它所占的空间相对要小.但是因为pdf文件的安全性很好所以不能进行编辑,那我们又要进行编辑图片的时候,就又会把PDF文件格式转换成图片来进行编辑. ...

  7. 导出文件_一招解决PDF文件导出图片

    将PDF文件保存为高清图片是经常需要进行的保存方式之一,因为PDF文件虽然安全性高,但是相比较图片而言,还是不易进行查看的,那么如何将PDF文件导出图片呢?以前也了解过很多方法,不过最好的当然不是截图 ...

  8. 前端PDF文件转图片方法(你值得收藏)

    前端PDF文件转图片方法(你值得收藏) 第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的 <script src="pdfjs/build/pdf.j ...

  9. JS逐页转pdf文件为图片格式

    背景 年前的时候,开发一个电子杂志项目,功能需求是通过上传pdf文件,将其转为图片格式,所以杂志的内容其实就是一张张图片 不过当时技术要求用后端实现,所以使用的是PHP实现该功能.项目完成后,寻思着在 ...

最新文章

  1. 80个Python经典资料(教程+源码+工具)汇总——下载目录
  2. Flutter Widget
  3. Matlab:成功解决The option is not valid. The options must be'double','native','default','omitnan', or'inc
  4. Python SqlAlchemy使用方法
  5. Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
  6. java将030A转换为方块_JAVA试题
  7. 使用Spring Boot,JHipster和React构建照片库PWA
  8. 准备好钱了吗?新款iPhone或于9月13日开始接受预订
  9. Hadoop 集群搭建补充
  10. jmeter-Java关于MD5加密方法 以及16位32位互转
  11. java win7 管理员权限_Win7下超级管理员创建普通权限任务
  12. Correct the classpath of your application so that it contains a single, compatible version of 包名
  13. 参考文献名称怎么复制_PDF格式的英文文献怎么翻译成中文?教你一招最简单快速的办法...
  14. mysql单表查询详解
  15. npm安装包报错,清除一下缓存
  16. mysql数据库实战演练_SQL 语句实战演练
  17. 总结使人进步,遵循事物的发展规律
  18. python跳一跳脚本详解_跳一跳 python脚本 改进版
  19. 王者荣耀服务器能不能注销,王者荣耀游戏账号能永久注销吗 永久删除后还能恢复吗...
  20. 如何设置任务管理器的任务开机自启

热门文章

  1. Java基础 DAY05
  2. 2021年日本互联网服务业发展现状:ZHD和LINE 的合并将改变日本互联网行业格局[图]
  3. 【D3.js数据可视化系列教程】(三十六)-- 冰柱图
  4. 开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana/dgiot
  5. RS-485详解(一)
  6. 探讨Python在开发中的重要性!
  7. android手机两年变卡,安卓手机用一两年就卡是通病,知道这几招,还可以用很久...
  8. 901c语言程序设计6,2018年中央财经大学信息院901C语言程序设计考研核心题库
  9. Elasticsearch-8.2.0安装问题
  10. tp获取php异常信息,ThinkPHP 异常处理