JAR包:2019年4月19日maven最新版本

        <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.15</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.15</version></dependency>

工具类:PDFUtils.java

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import javax.imageio.ImageIO;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;public class PDFUtils {public void test(){String filePath = "F://spring揭秘(完整).pdf";List<String> imageList = pdfToImagePath(filePath);Iterator<String> iterator = imageList.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}
//        pdfToImage(filePath);}/*** 将PDF按页数每页转换成一个jpg图片* @param filePath* @return*/public static List<String> pdfToImagePath(String filePath){List<String> list = new ArrayList<>();String fileDirectory = filePath.substring(0,filePath.lastIndexOf("."));//获取去除后缀的文件路径String imagePath;File file = new File(filePath);try {File f = new File(fileDirectory);if(!f.exists()){f.mkdir();}PDDocument doc = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();for(int i=0; i<pageCount; i++){// 方式1,第二个参数是设置缩放比(即像素)// BufferedImage image = renderer.renderImageWithDPI(i, 296);// 方式2,第二个参数是设置缩放比(即像素)BufferedImage image = renderer.renderImage(i, 1.25f);  //第二个参数越大生成图片分辨率越高,转换时间也就越长imagePath = fileDirectory + "/"+i + ".jpg";ImageIO.write(image, "PNG", new File(imagePath));list.add(imagePath);}doc.close();              //关闭文件,不然该pdf文件会一直被占用。} catch (IOException e) {e.printStackTrace();}return list;}/*** @Description pdf转成一张图片* @created 2019年4月19日 下午1:54:13* @param pdfFile* @param outpath*/private static void pdf2multiImage(String pdfFile, String outpath) {try {InputStream is = new FileInputStream(pdfFile);PDDocument pdf = PDDocument.load(is);int actSize  = pdf.getNumberOfPages();List<BufferedImage> piclist = new ArrayList<BufferedImage>();for (int i = 0; i < actSize; i++) {BufferedImage  image = new PDFRenderer(pdf).renderImageWithDPI(i,130, ImageType.RGB);piclist.add(image);}yPic(piclist, outpath);is.close();} catch (IOException e) {e.printStackTrace();}}/*** 将宽度相同的图片,竖向追加在一起 ##注意:宽度必须相同* @param piclist  文件流数组* @param outPath  输出路径*/public static void yPic(List<BufferedImage> piclist, String outPath) {// 纵向处理图片if (piclist == null || piclist.size() <= 0) {System.out.println("图片数组为空!");return;}try {int height = 0, // 总高度width = 0, // 总宽度_height = 0, // 临时的高度 , 或保存偏移高度__height = 0, // 临时的高度,主要保存每个高度picNum = piclist.size();// 图片的数量int[] heightArray = 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);heightArray[i] = _height = buffer.getHeight();// 图片高度if (i == 0) {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];if (i != 0) _height += __height; // 计算偏移高度imageResult.setRGB(0, _height, width, __height, imgRGB.get(i), 0, width); // 写入流中}File outFile = new File(outPath);ImageIO.write(imageResult, "jpg", outFile);// 写图片} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {pdf2multiImage("C:\\Users\\Wangjun\\Desktop\\发票.pdf", "F:\\Wangjun\\111.jpg");}
}

pdf转图片程序(java实现)(转为一张,多张)相关推荐

  1. 微信小程序实现PDF转图片(java spring实现)

    微信小程序实现PDF转图片前后端(两种方式) 1.前端传PDF的url地址至后端 1.1前端 1.2后端 2.前端传PDF文件至后端 2.1前端 2.2后端 1.前端传PDF的url地址至后端 1.1 ...

  2. java pdf转图片原理_pdf转图片程序(java实现)

    所需要的jar包如下,可自行从maven官网上下载 所需要的jar包 import java.awt.image.BufferedImage; import java.io.File; import ...

  3. java读取pdf三维图片_java 读取PDF文件生成图片形式

    引入所需maven依赖 org.icepdf.os icepdf-core 6.2.2 javax.media jai_core JAVA代码工具类package com.util; import c ...

  4. Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题

    Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题 使用pdfbox-2.0.3和fontbox-2.0.3,实现pdf转图片功能. 官方手册链接: http://pdfbox.ap ...

  5. Java 添加PDF印章——图片印章、动态印章

    图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...

  6. java中如何将office文件转成pdf或者图片(亲测有效)

    前段时间做项目时,需要将word文档在浏览器中打开,一般的在浏览器中打开word都是直接提示下载的,找了好久都是些pageoffice等的收费插件,小项目成本要尽量压缩,所以就放弃了这种收费的插件了. ...

  7. java pdfreader去除水印_(最新)JAVA使用Icepdf 5.0.6 pro的PDF转图片去掉水印的方法...

    最近发现PDF转图片各种开源工具PDFBOX.PDFRenderer.jpedal都不好用,中文各种蛋疼,但是试用了一下Icepdf相当强大,唯一不足就是生成的图片带有官方水印,下面介绍一下去掉官方水 ...

  8. Java制作PDF转图片小工具

    背景: 前几日一位朋友突然找我帮忙将PDF转换成图片,我仗义相助,建议他使用福昕阅读器,然而他说转换需要VIP会员,老贵了.我花了半天时间寻找免费会员,结果不出所料没有找到,我一怒之下,便决定亲自动手 ...

  9. java使用Aspose.pdf实现pdf转图片

    主要步骤 使用Aspose进行文档转换,首先引入相应的jar包到系统环境 项目resource下导入license.xml文件 使用Aspose时,需要调用设置License方法,设置完成第一次转换比 ...

最新文章

  1. 《领域模型》——通过重构得到更深层次的理解
  2. 上位机多个下位机modbustcp通讯_【C#上位机】西门子1200PLC实用定位控制程序案例...
  3. c语言删增,C语言中初始、增加和删除进程信号的操作方法简介
  4. 机器学习java_Java机器学习,第2部分
  5. java接口源码_java collection接口源码
  6. 表格c1等于a1加b1_中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!...
  7. k8s上安装并初始化Helm。minikube
  8. 「快学springboot」SpringBoot整合freeMark模板引擎
  9. antv g6 禁止移动_十 AntV
  10. review一下上一年的积累
  11. Windows Insider 最新重大升级
  12. scrapy之spiders
  13. 公众号开发精品教程(4)——生成带参数的二维码及合成海报
  14. 网吧模式一台服务器拖显示器,摆500台机器太傻 网咖显示器如何配置?
  15. 弘辽科技:淘宝商家群是怎么划分层级的?
  16. WinX教程之我的实战(三)
  17. 目标框检测中准确率、召回率、AP、mAP计算原理及代码
  18. Python--递归初步
  19. Linux Python离线下载模块
  20. 面向对象和面向过程的区别及面试问答

热门文章

  1. Ubuntu 20.04 安装微信、QQ
  2. 长沙VR丨云图VR全景业务是一个创业新机遇!
  3. ROS安装过程中rosdep update的解决方法!
  4. 2023软件测试全方位测试面经分享——最全最细面试题八股文
  5. 基于OO模版技术的文档Web输出新法
  6. 个人Java学习(一)
  7. html制作商城大概布局,html 网上商城部署项目
  8. 应届生深圳求职全攻略
  9. Tiny6410开机logo制作
  10. 各种实用的音频文件在线工具,一款解决所有转换难题