pdf转图片程序(java实现)(转为一张,多张)
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实现)(转为一张,多张)相关推荐
- 微信小程序实现PDF转图片(java spring实现)
微信小程序实现PDF转图片前后端(两种方式) 1.前端传PDF的url地址至后端 1.1前端 1.2后端 2.前端传PDF文件至后端 2.1前端 2.2后端 1.前端传PDF的url地址至后端 1.1 ...
- java pdf转图片原理_pdf转图片程序(java实现)
所需要的jar包如下,可自行从maven官网上下载 所需要的jar包 import java.awt.image.BufferedImage; import java.io.File; import ...
- java读取pdf三维图片_java 读取PDF文件生成图片形式
引入所需maven依赖 org.icepdf.os icepdf-core 6.2.2 javax.media jai_core JAVA代码工具类package com.util; import c ...
- Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题
Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题 使用pdfbox-2.0.3和fontbox-2.0.3,实现pdf转图片功能. 官方手册链接: http://pdfbox.ap ...
- Java 添加PDF印章——图片印章、动态印章
图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...
- java中如何将office文件转成pdf或者图片(亲测有效)
前段时间做项目时,需要将word文档在浏览器中打开,一般的在浏览器中打开word都是直接提示下载的,找了好久都是些pageoffice等的收费插件,小项目成本要尽量压缩,所以就放弃了这种收费的插件了. ...
- java pdfreader去除水印_(最新)JAVA使用Icepdf 5.0.6 pro的PDF转图片去掉水印的方法...
最近发现PDF转图片各种开源工具PDFBOX.PDFRenderer.jpedal都不好用,中文各种蛋疼,但是试用了一下Icepdf相当强大,唯一不足就是生成的图片带有官方水印,下面介绍一下去掉官方水 ...
- Java制作PDF转图片小工具
背景: 前几日一位朋友突然找我帮忙将PDF转换成图片,我仗义相助,建议他使用福昕阅读器,然而他说转换需要VIP会员,老贵了.我花了半天时间寻找免费会员,结果不出所料没有找到,我一怒之下,便决定亲自动手 ...
- java使用Aspose.pdf实现pdf转图片
主要步骤 使用Aspose进行文档转换,首先引入相应的jar包到系统环境 项目resource下导入license.xml文件 使用Aspose时,需要调用设置License方法,设置完成第一次转换比 ...
最新文章
- 《领域模型》——通过重构得到更深层次的理解
- 上位机多个下位机modbustcp通讯_【C#上位机】西门子1200PLC实用定位控制程序案例...
- c语言删增,C语言中初始、增加和删除进程信号的操作方法简介
- 机器学习java_Java机器学习,第2部分
- java接口源码_java collection接口源码
- 表格c1等于a1加b1_中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!...
- k8s上安装并初始化Helm。minikube
- 「快学springboot」SpringBoot整合freeMark模板引擎
- antv g6 禁止移动_十 AntV
- review一下上一年的积累
- Windows Insider 最新重大升级
- scrapy之spiders
- 公众号开发精品教程(4)——生成带参数的二维码及合成海报
- 网吧模式一台服务器拖显示器,摆500台机器太傻 网咖显示器如何配置?
- 弘辽科技:淘宝商家群是怎么划分层级的?
- WinX教程之我的实战(三)
- 目标框检测中准确率、召回率、AP、mAP计算原理及代码
- Python--递归初步
- Linux Python离线下载模块
- 面向对象和面向过程的区别及面试问答