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

标签: 文档 展示 pdfbox | 发表时间:2014-01-26 16:22 | 作者:
出处:http://www.iteye.com
  项目用到了前端展示文档的功能。

   原有实现为服务器端:FlashPaper2 + java,前端flash控件接收swf流输出。但是当服务器升级为64位以后,服务器端的FlashPaper2再也配不起来了。

   Boss要求实现文档展示功能,并且要求能够控制客户下载文档。

   我想了下能不能不用flash或别的插件来达到要需求,这样就对客户端没啥必装的插件之类的要求了。

   前端不做处理,就只有在后端做处理了!

   大体想法为:

        1.对于普通文本文档直接输出到前端
    
        2.对于PDF PPT 图片等转换为图片展示到前端

        3.对于DOC类型的文档看能不能转换为图片,不行的话就先转换为PDF再转图片

        4.对于性能问题等功能实现了再调优

   该功能的难点在文档转图片,再此做出预研。

PDF转图片使用了apache的PDFBox组件1.8.3版本

功能演示代码:

package com.zas.pdf.demo;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

/**
 * @author zas
 * PDF转换为图片工具类
 */
public class PDFConvertToImage {
	
	static String filePath = "D:\\pdf\\java多线程编程.pdf";
	static String outputFilePath = "D:\\pdf\\java\\";

	/**
	 * 将输入的PDF文件转换为图片
	 * @param inputFile 输入的PDF文件
	 * @param outputFolder 图片输出目录
	 * @throws IOException
	 */
	public static void change(File inputFile, File outputFolder) throws IOException {
		//TODO 校验输入文件是否存在 以及是否为PDF
		//TODO 对于PDF加密后的处理
		PDDocument doc = null;
		try {
			doc = PDDocument.load(inputFile);
			List<PDPage> allPages = doc.getDocumentCatalog().getAllPages();
			for (int i = 0; i < allPages.size(); i++) {
				PDPage page = allPages.get(i);
				page.convertToImage();
				BufferedImage image = page.convertToImage();
				ImageIO.write(image, "jpg", new File(outputFolder.getAbsolutePath() + File.separator + (i + 1) + ".jpg"));
			}
		} finally {
			if (doc != null) {
				doc.close();
			}
		}
	}
	
	public static void main(String[] args) {
		File inputFile = new File(PDFConvertToImage.filePath);
		File outputFolder = new File(PDFConvertToImage.outputFilePath);
		if(!outputFolder.exists()){
			outputFolder.mkdirs();
		}
		try {
			PDFConvertToImage.change(inputFile, outputFolder);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}



问题:

当PDF文档为180M大小时直接报解析异常

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

后期在处理这两个问题

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [文档 展示 pdfbox] 推荐:

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

- - ITeye博客
  项目用到了前端展示文档的功能.    原有实现为服务器端:FlashPaper2 + java,前端flash控件接收swf流输出. 但是当服务器升级为64位以后,服务器端的FlashPaper2再也配不起来了.    Boss要求实现文档展示功能,并且要求能够控制客户下载文档.    我想了下能不能不用flash或别的插件来达到要需求,这样就对客户端没啥必装的插件之类的要求了.

Apache PDFBox 1.8.0 发布

- - 开源中国社区最新新闻
Apache PDFBox 1.8.0 发布了,该版本除了修复大量 bug 之外,还包含如下新特性:. PDFBox是Java实现的PDF文档协作类库,提供PDF文档的创建、处理以及文档内容提取功能,也包含了一些命令行实用工具. PDF 文档加密与解密. 与 Lucene搜索引擎的集成. 填充PDF/XFDF表单数据.

HTML5 & CSS3 研究文档

- Kings - 幸福收藏夹
已经说了好久,一直没把这个文件夹分享出来. 这是我去年第四季度里做的,里面有 11 一个文档. 包括 HTML5 中最主要的 JS API 文档,还有 CSS3 中两个比较难的属性. 主要还停留在纯 API 层面上的研究,没有深入到应用中去. 不过,当做工具来使用,和入门文档,还是不错的. 特别是其中的 HTML5 JS API 文档.

Twitter API中文文档

- Jacob - 月光博客
  目前的国内的微博客很多,不少微博客都提供Open API,然而,很多微博提供的API和Twitter的API有一些或多或少的差别,调用格式上并不完全相同.   我建议所有提供API的微博客系统,都将各自的API统一为Twitter的API调用格式,例如目前较有影响的开源微博系统StatusNet(Laconica)的API格式就完全兼容Twitter,这种统一API对于开发者和用户都有很大的好处.

Underscore.js Version (1.2.3) 中文文档

- - WEB前端开发
Underscore 一个非常实用的JavaScript库,提供许多编程功能的支持,就像你期望 Prototype.js (或者 Ruby), 有这些功能且不扩展任何JavaScript的原生对象. 有函数式编程的风格,还支持链式调用. 主要涉及对Collection、Object、Array、Function的操作,还有一些实用方法.

Redis集群明细文档

- - CSDN博客架构设计推荐文章
  Redis目前版本是没有提供集群功能的,如果要实现多台Redis同时提供服务只能通过客户端自身去实现(Memchached也是客户端实现分布式). 目前根据文档已经看到Redis正在开发集群功能,其中一部分已经开发完成,但是具体什么时候可以用上,还不得而知. 文档来源: http://redis.io/topics/cluster-spec.

Azkaban2官方配置文档

- - CSDN博客云计算推荐文章
最近工作实在是太忙了,我把之前翻译的官方的文档先放上来吧,希望对大家有所帮助~. 3、更容易设置job的依赖关系. 6、Kill和restart工作流. 8、日志和设计工作流和job. Azkaban2是相当容易搭建的,尽管它比azkaban要进行更多的插件组装. 在Azkaban2中有两个server和一个数据库需要搭建:.

elasticsearch文档-字段的mapping

- - 开源软件 - ITeye博客
elasticsearch文档-字段的mapping. Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types"的documents,ES允许每个mapping type关联多个mapping定义.

elasticsearch 文档 - 轩脉刃

- - 博客园_首页
elasticsearch 文档. 索引中最基本的单元叫做文档 document. "content": "汽车常见故障的解决办法有哪些. } 文档中下划线开头的是es自带的字段. _id 代表文档id,如果插入文档的时候没有设置id的话,那么es会自动生成一个唯一id. _score 这个不是文档自带的,而是进行搜索的时候返回的,代表这个文档和搜索的相关匹配分值.

文档抽象模型xml,xml解析生成pdf,word文档

- - CSDN博客推荐文章