《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》 Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现

笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载。笔者想到了百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash来播放文档的,在网上查阅了大量资料,终于实现了该项功能,现将自己的设计和实现整理如下。

一、如何将文档转成flash支持的swf文件实现在线播放?
1.先用openOffice把ppt、word、excel、txt类型的文档转换成pdf
2.用swftools将pdf转换成swf,然后利用FlexPaper插件实现在线播放预览。
二、具体实现
1.安装必备工具组件
(1)安装openoffice,openoffice是开源免费的文字处理软件,它可以将office文档转成pdf文件(笔者安装到D:Program Files),openOffice下载地址http://www.openoffice.org/download/index.html
(2)安装完openoffice后必须启动其server,以命令行方式启动openoffice server。进入cmd命令行提示符D:Program FilesOpenOffice.org 3program
键入如下命令:
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" –nofirststartwizard
《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现进入windows任务管理器查看有个进程soffice.bin,说明openoffice启动成功!
《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现(3)安装swfTools(安装到 D:Program Files)swftools作用是将pdf转换为swf文件以便flexpaper播放。下载地址:http://www.swftools.org/download.html
(4)下载flexpaper,下载地址:http://flexpaper.devaldi.com/download/
笔者下载的是FlexPaper_1.5.1,下载后将其解压备用。
(5)下载OpenDocument文档转换器 JODConverter,JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用OpenOffice来进行转换工作,它能进行以下的转换工作:
a.Microsoft Office格式转换为OpenDucument,以及OpenDucument转换为Microsoft Office
b.OpenDucument转换为PDF,Word、Excel、PowerPoint转换为PDF,RTF转换为PDF等。
下载地址:http://sourceforge.net/projects/jodconverter/files/
我们后面开发主要用它的jodconverter-2.2.2.jar包

2.软件开发过程
(1)启动Eclipse,新建web项目名称为ctcesims
(2)将上面第4步解压的flexpaper文件中的js文件夹(包含了flexpaper_flash_debug.js,flexpaper_flash.js,jquery.js,这三个js文件主要是预览swf文件的插件)拷贝至网站根目录;将FlexPaperViewer.swf拷贝至网站根目录下(该文件主要是用在网页中播放swf文件的播放器),目录结构如下图
《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现(3)创建documentUpload.jsp文件

pageEncoding

(4)创建文档转换类DocConverter.java

package

(5)创建文档上传转换处理文件docUploadConvertAction.jsp文件

pageEncoding

(6)创建文档预览文件documentView.jsp

pageEncoding

7.启动tomcat,部署当前web应用
8.地址栏输入http://localhost:8080/ctcesims/documentUpload.jsp 如下图:

《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现

单击选择文件,选择您要上传的文档,笔者选择的是lunwen.doc文件,然后单击上传,处理完成后,打印如下信息,如下图所示:
《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现单击预览按钮,就会生成预览界面,如下图:
《Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现》
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现9.若出现swf无法预览,请访问
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065将生成swf的文件夹设置为信任文件位置。
由于时间仓促,以上只是简单示例,很多情况还需要进一步考虑!

10.如果pdf文件过大,则需要按页生成一个个swf文件,那么在使用swftools的pdf2swf命令时,对生成的swf的文件命名采用%.swf命名即可,例如pdf2swf test.pdf d:swf\%.swf

参考资料:
http://blog.csdn.net/iamduoluo/article/details/6727031
http://www.cnblogs.com/star-studio/archive/2011/12/09/2282411.html#2497889