java 将pdf多页转换成一张图片,支持指定页数

代码:

/**
 * 将pdf中的maxPage页,转换成一张图片
 *
 * @param pdfFile
 *            pdf的路径
 * @param outpath
 *            输出的图片的路径[包括名称]
 * @param maxPage
 *            pdf的页数
 *            【比如Pdf有3页,如果maxPage=2,则将pdf中的前2页转成图片,如果超过pdf实际页数,则按实际页数转换】
 */
private static void pdf2multiImage(String pdfFile, String outpath, int maxPage) {
	try {
		InputStream is = new FileInputStream(pdfFile);
		PDDocument pdf = PDDocument.load(is, true);
		List<PDPage> pages = pdf.getDocumentCatalog().getAllPages();
		List<BufferedImage> piclist = new ArrayList<BufferedImage>();
		int actSize = pages.size(); // pdf中实际的页数
		if (actSize < maxPage) maxPage = actSize;
		for (int i = 0; i < maxPage; i++) {
			piclist.add(pages.get(i).convertToImage());
		}
		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();// 图片的数量
		File fileImg = null; // 保存读取出的图片
		int[] heightArray = new int[picNum]; // 保存每个文件的高度
		BufferedImage buffer = null; // 保存图片流
		List<int[]> imgRGB = new ArrayList<int[]>(); // 保存所有的图片的RGB
		int[] _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("f:/bak/aa.pdf", "f:/bak/bbbbb.jpg", 4);
}

转换图片,需要两个jar包:

commons-logging.jar

pdfbox-1.6.0.jar

时间: 2024-09-26 20:44:09

java 将pdf多页转换成一张图片,支持指定页数的相关文章

怎么将一张CAD图纸文件转换成一张图片的格式呢?

怎么将一张CAD图纸文件转换成一张图片的格式呢?CAD格式的图纸文件都可以将其转换成dwg或是其他一些格式的,有时候在我们拿到打开一张CAD图纸的时候需要将其转换成图片格式时候,我们应该如何进行操作呢?今天小编就要来教教大家怎么将一张CAD图纸文件转换成一张图片格式的全部操作步骤了,希望大家进行采纳! 第一步:首先打开电脑上面的CAD转换器,如果您们电脑上面没有CAD转换器这款软件的话,你们就可以去到软件商店或是官网上面直接去进行下载!就可以和小编使用一样的CAD转换器软件了!第二步:进入到转换

迅捷好用的在线PDF转Word转换工具

也许有人会问,PDF如何转换成Word?展现正在我们眼前的有这么多的PDF转换工具,那到底哪种PDF转 Word转换器会更好? 如何将PDF转成Word?迅捷PDF转换成Word在针对转换过程的处理上,通过深度PDF文件识别和处理技 术,将PDF文件的内容作为完整的数据进行解析,从而有效地确保了整个转换的过程更为完善,这也是为 什么迅捷PDF转换成Word转换器能够实现百分之百转换的主要原因. 作为知名的PDF文件格式,迅捷PDF转换成Word转换器具备如下特色功能: 高质量的PDF转换功能.众

Java将一段逗号分割的字符串转换成一个数组

String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 可以共享.String 类包括的方法可用于检查序列的单个字符.比较字符串.搜索字符串.提取子字符串.创建字符串副本并将所有字符全部转换为大写或小写.Java 语言提供对字符串串联符号("+")以及将其他 对象转换为字符串的特殊支持.字符串串联是通过 StringBuilde

如何进行dwg转pdf 多页转换

Dwg格式文件是一种图纸格式,设计师常会遇到这样的文件,但是dwg格式文件不便携带,一般情况下也无法打开,这时候我们都会把dwg格式文件转成PDF文件. 一.但是,你知道dwg转PDF该怎么转换呢?如果想要多页批量转换该怎么办呢? 想要将dwg文件转换成PDF格式,我们可以使用迅捷CAD编辑器(官网下载:http://cad.xjpdf.com)进行转换,迅捷CAD编辑器是一款强大的专门应用于dwg格式文件编辑工具,支持多种图纸格式预览.编辑.格式转换等. 二.怎么把dwg转换成PDF格式? 1

java文本、表格word转换生成PDF加密文件代码下载

原文:java文本.表格word转换生成PDF加密文件代码下载 代码下载地址:http://www.zuidaima.com/share/1550463239146496.htm 这个实现了PDF加密功能,和一些基本的问题. java文本.表格word转换生成PDF加密文件代码下载,布布扣,bubuko.com

java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org   openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库) 笔者下载的是openoffice.org 3.3.0.下载完直接安装即可.      但是,我们还需要启动openof

[开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库

ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提取所有的文字或信息,比如给pdf文档做摘要 2.把pdf转换成图片,这个功能非常的棒,比如给pdf文件做缩略图或者直接做一个纯js的pdf阅读器. 3.pdf文档的分页打印和信息搜索. 4.pdf中添加.修改或删除批注信息. 在pdf到图片转换方面,最好的开源产品. 官方地址:http://www.

评测:最好最有效的PDF在线无损转换免费工具Smallpdf

比较目前最流行的几款PDF处理工具,包括著名的Adobe acrobat原版工具,俄国的ABBYY FineReader,以及平时可能配套需要用到的OCR文件识别功能,最后评测得出优胜的是一款新近免费开源的Smallpdf,测试过后,简直是无损复原Word,有网友评论,简直就想捐款. 评测过程及效果如下: 在网址栏,直接输入smallpdf.com打开工具主页. 或者在tool321.com工具聚合主页上查找阅读类,首推的便是Smallpdf,同时收录了还有比较        出名的Acroba

PDF→Excel格式转换工具集锦!

1. Free PDF to Excel Converter Free PDF to Excel Converter是一个把PDF文件转换为Excel格式的多功能免费程序.它支持批量处理,同时也支持XLSX和XLS以及CSV三种输出格式你可以在它的工具栏上点击"添加PDF文件"或者"添加文件夹"来转换PDF文件.添加文件之后点击转换按钮就开始处理程序了.你也可以只点击需要处理的页面,合并所有的PDF文件到一个Excel文件.它会试图保留格式,但可能不完全成功,但是所