`
zhuyufufu
  • 浏览: 135014 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

文档展示:PDFRender 将PDF转换为图片

阅读更多
上接 文档展示:PDFBox 将PDF转换为图片
http://zhuyufufu.iteye.com/blog/2009600

上面链接的文章展示了使用PDFBox转PDF为图片,但是有问题:

1.当PDF文档为180M大小时直接报解析异常 (通过加大堆内存可解决)

2.当PDF页数为500多页时处理非常慢

3.测试例子中出现中文正常,英文数字括号乱码的情况

4.jar包很大,达到9M以上

换个组件使用PDFRender来实现例子

上代码:

package com.zas.pdfrender.test;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PDFRenderTest {
	
	public static void convert(String inputPDFPath, String outputFDir) throws IOException, FileNotFoundException {
		//pdf文件存在校验,输出文件夹创建
		File file = new File(inputPDFPath);
		if(!file.exists()){
			throw new FileNotFoundException("文件不存在: " + inputPDFPath);
		}
		File outputFolder = new File(outputFDir);
		if(!outputFolder.exists()){
			outputFolder.mkdirs();
		}
		
		//获取PDFFile
		RandomAccessFile raf = new RandomAccessFile(file, "r");
		FileChannel channel = raf.getChannel();
		ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
		channel.close();
		raf.close();
		PDFFile pdffile = new PDFFile(buf);
		
		System.out.println("PDF页数: " + pdffile.getNumPages() + " , " + inputPDFPath);
		
		//转化处理
		for (int i = 1; i <= pdffile.getNumPages(); i++) {
			PDFPage page = pdffile.getPage(i);
			Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight());
			Image img = page.getImage(rect.width, rect.height, // width &  height
					rect, // clip rect
					null, // null for the ImageObserver
					true, // fill background with white
					true // block until drawing is done
					);
			BufferedImage tag = new BufferedImage(rect.width, rect.height, BufferedImage.TYPE_INT_RGB);
			
			Graphics2D g=tag.createGraphics();
			//g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g.drawImage(img, 0, 0, rect.width, rect.height, null);
			FileOutputStream out = new FileOutputStream(outputFDir + i + i + ".png"); // 输出到文件流
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			JPEGEncodeParam param2 = encoder.getDefaultJPEGEncodeParam(tag);
			param2.setQuality(1f, false);// 1f是提高生成的图片质量
			encoder.setJPEGEncodeParam(param2);
			encoder.encode(tag); // JPEG编码
			out.close();
		}
	}

	public static void main(final String[] args) throws FileNotFoundException, IOException {
		String inputPDFPath = "D:\\pdf\\ppt\\2010110档案管理系统需求分析说明书正式.pdf";
		String outputFDir = "D:\\pdf\\222222222222010110系统需求分析说明书正式\\";
		PDFRenderTest.convert(inputPDFPath, outputFDir);
	}
}



结果:
能够正常转换PDF为图片,没有乱码

问题:

1.转换的图片稍毛糙

2.在PDF超过500页时和PDFBox一样慢的令人难以忍受,看来只有做多线程处理了


PDF转图片效果最好的还是Adobe Acrobat X Pro,但是它没有提供程序调用接口,还是收费软件,好像也不支持Linux

还有两天的技术预研时间,接下来研究下文档转换为HTML
0
0
分享到:
评论

相关推荐

    PDF转换器软件TalkHelper PDF Converter OCR.rar

    TalkHelper PDF Converter OCR 是一款综合性的PDF格式转换器软件,可允许用户将PDF转换为Word、Excel、PPT、HTML、TXT、图片、EPub等主流文件格式,还可以并将其他格式转换为PDF格式文件,TalkHelperPDFConverter ...

    pdf转换器图片转换

    pdf转换器图片转换WORD等文档,或将WORD等文档转换成PDF

    Word文档转换为图片Pdf,Word文档扫描成Pdf

    Word转换为图片Pdf 1、 Word转换为Pdf,程序很多,但转换后的Pdf,还可以复制,虽可以加密禁止复制,但市场上太多的Pdf,还可以把Pdf转换Word等其他格式,很容易被别人利用和剽窃,如何彻底的自己的Word文档,可以被...

    PDFShaperProfessional11.5x64一款非常专业的PDF多功能转换器.exe

     合并文档:合并多个PDF文档为一个。 分割文档:按文档数或页面数分割PDF文档。 提取文本:从PDF文档提取全部或部分文本。 提取图像:从PDF文档中提取全部图像素材。 删除图片:删除PDF文档中的全部或部分图片...

    北斗PDF转换器

    北斗PDF转换器 软件操作:如:PDF转word 1.北斗PDF软件默认的转化方式为PDF转Word,则进入软件界面的【PDF的其他文件】中的【文件转Word】功能。 2.北斗PDF软件进入软件界面直接点击【添加文件】选择需要进行转换成...

    文档格式转换-Word转PDF-PDF以图片的方式存储;

    2.方便演示:将Word文档转换为图片后,可以方便地进行演示和展示,比如在会议、培训等场合中,可以通过投影仪或电子白板进行展示,让观众更加直观地了解文档内容。 3.省去安装插件的麻烦:有时候,为了打开Word文档...

    PDF Word Converter V2 一站式文档转换解决方案

    Word 转 PDF:将 Word 文档转换为 PDF 格式,确保跨平台的文档一致性和专业呈现。 批量处理:一次性转换多个文档,提高工作效率。 高保真转换:精确还原文档元素,包括文本、图片、表格和格式。 安全保障:本地转换...

    c++将pdf转换为text文档

    c++将pdf转换为text文档c++将pdf转换为text文档c++将pdf转换为text文档c++将pdf转换为text文档

    免费PDF转换器:支持免费PDF转Word、Excel、PPT、图片、OCR等

    多合一PDF转换器 支持几乎所有常见文档格式,一键完成PDF与其他文档的转换,支持图文识别OCR等增值功能,完善您的办公解决方案。...将文档转换为 PDF 后,您将能够从服务器下载和删除您的文件。如果您碰巧忘记删除

    Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片

    Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用。Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用。Word、Excel等常用文档格式通过OpenOffice转换为pdf及图片,亲测,可用...

    PDF Conversa Pro(PDF转换器)官方正式版V3.000 | 轻松将PDF转换成Word文档

    PDF Conversa Pro 是一款短小精悍实用靠谱的pdf转word软件,能帮助大家轻松将PDF转换成Word文档,不管用户是要将PDF文档转换为Word格式的DOC/RTF还是将Word文档转换为PDF都可以保质保量的完成,与源文件基本布局相关...

    PDF文档转换为图片pdf.zip

    将PDF文档转换为图片的方法。包含dll完整示例,可以直接运行。

    All PDF Converter全能PDF转换器 v2.4.2.zip

    可以实现将不可编辑的PDF转换成多种可编辑,并且我们经常能够用到的文档格式。最大限度地保留了原PDF文件文本格式。 All PDF Converter全能PDF转换器特点 支持将PDF转换成Word,包括Doc与Docx格式 支持将PDF转换...

    易捷PDF转Word(PDF转换成Word工具) v3.2 免费版.zip

    易捷PDF转换成Word工具是一款专业的PDF转Word工具软件,易捷pdf转word转换器能快速准确的将您PDF文档中的文字及图片提取出来,转换保存成Word格式,同时很好的让原有PDF中的文字/字体/大小/行间距等保持不变,图片也...

    迅捷pdf转换成word转换器 v6.3.zip

    使用本软件,可以很方便快捷地把pdf文档转换为word文档、txt文本、图片文件,方便二次编辑、修改、存储、引用原文档中的内容,可以很好地转换原pdf文档中的文字、图片、表格、超链接、排版,最大限制地保持转换后的...

    OFD转换PDF、IMG、SVG、HTML工具JAR包

    PDF转换: 通过对OFD的文档进行解析,使用 Apache Pdfbox生成并转换OFD中的元素为PDF内的元素实现PDF的转换。 图片转换: 通过对OFD的文档进行解析,采用java.awt绘制图片,支持转换为PNG、JPEG图片格式。 SVG矢量...

    Python 如何把Word文档批量转换为PDF文档 Python源码

    Python 如何把Word文档批量转换为PDF文档 Python源码Python 如何把Word文档批量转换为PDF文档 Python源码Python 如何把Word文档批量转换为PDF文档 Python源码Python 如何把Word文档批量转换为PDF文档 Python源码...

    图片&文档&pdf转换swf格式 在线预览 格式转换

    统一所有文件预览 文件包括三类: |--图片:jpg、jpeg、png |--文档:OFFICE:ppt、pptx、word、wordx、xls... 实现:图片和文档转换为PDF文件,PDF文件统一转换为SWF文件(转换功能完整实现) 预览采用FlexPaper

    Solid Converter PDF(快速将PDF转换成Word文档)v7.1 中文破解版

    1、 将继承的扫描 PDF 文件转换为格式化好的、可编辑的 Word 文档; 2、扫描为 Word。直接从纸页扫描为格式化、可编辑的 Word 文件; 3、PDF创建与编辑功能 注册说明: 1、安装solidconverterpdf.exe 2、使用...

    All PDF Converter(全能PDF转换器)

    可以实现将不可编辑的PDF转换成多种可编辑,并且我们经常能够用到的文档格式。 支持将PDF转换成Word,包括Doc与Docx格式 支持将PDF转换成Excel,包括xls,与xlsx格式。 支持将PDF转换成图片,包括转换成JPEG、PNG、...

Global site tag (gtag.js) - Google Analytics