打造自己在在线文档浏览
Apache POI
对在线文档浏览的误会,刚开始我选择了POI项目
Apache Poi下载地址:http://poi.apache.org/download.html
我使用的版本是稳定版poi-bin-3.14.zip
ApachePoi组件
- POIFS(较差混淆技术实现文件系统):此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。
- HSSF(可怕的电子表格格式):它被用来读取和写入MS-Excel文件的xls格式。
- XSSF(XML格式):它是用于MS-Excel中XLSX文件格式。
- HPSF (可怕的属性设置格式):它用来提取MS-Office文件属性设置。
- HWPF(可怕的字处理格式) :它是用来读取和写入MS-Word的文档扩展名的文件。
- XWPF(XML字处理格式):它是用来读取和写入MS-Word的docx扩展名的文件。
- HSLF(可怕的幻灯片版式格式):它是用于读取、创建和编辑PowerPoint演示文稿。
- HDGF(可怕的图表格式):它包含类和方法为MS-Visio的二进制文件。
- HPBF(可怕的出版商格式):它被用来读取和写人MS-Publisher文件。
Open Office
做浏览,其实是需要另一个OpenOffice的项目。
步骤:
- 先将doc、ppt、xls转换成pdf
- 再用js调用pdf在线查看
- 主要借助的工具openoffice、jodconvert、viewjs
安装openoffice
http://www.openoffice.org/zh-cn/download/
JODConvert简介
JODConvert,是一个Java的OpenDocument文件转换器,可以进行许多文件格式的转换。
它依赖于OpenOffice提供的服务来进行转换,它能将MS Office文档转换为PDF格式。
可以将JODConverter内嵌在Java应用程序里,也可以单独作为命令行由脚本调用,更可以应用为网页程序或者WebService以供网络应用。1
2
3
4
5
6
7
8OfficeManager officeManager = new DefaultOfficeManagerConfiguration( ).buildOfficeManager( );
//启动OpenOffice服务
officeManager.start( );
//执行转换
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(new File(“test.odt”), new File(“test.pdf”));
//停止服务
officeManager.stop( );
OfficeManager是一个接口,主要定义了三个方法:
- public void start() 启动OpenOffice服务
- public void stop() 停止OpenOffice服务
- public void execute(OfficeTask task) 执行转换任务
DefaultOfficeManagerConfiguration是一个实现了OfficeManager接口的实体类,其提供了相关方法配置OpenOffice.org,比如:1
2
3public DefaultOfficeManagerConfiguration setOfficeHome(String officeHome) //设置OpenOffice.org安装目录
public DefaultOfficeManagerConfiguration setConnectionProtocol(OfficeConnectionProtocol conn) //设置连接协议,确定使用管道通信,还是socket通信
public DefaultOfficeManagerConfiguration setTemplateProfileDir(File templateProfileDir)//设置临时目录
可以查看JODConvert API手册查看其它配置。
配置完之后,必须要执行方法buildOfficeManager(),实现真正的配置。
OfficeDocumentConverter中主要包含convert方法,该方法实际上调用的是实现OfficeManager接口的类中的execute方法。
算法设计
代码实现
1 | package com.converter.pdfConverter; |
渲染
下载viewerjs
http://viewerjs.org/releases/viewerjs-0.5.7.zip
解压,将ViewerJS下的所有内容放置项目webapp下,
在同级目录下放置一个pdf(test.pdf),
如项目名是xxx
在线预览该pdf为http://localhost:8080/xxx/test.pdf