- 注册时间
- 2009-12-25
- 最后登录
- 2021-7-10
- 在线时间
- 3302 小时
- 阅读权限
- 200
- 积分
- 10
- 帖子
- 13416
- 精华
- 1
- UID
- 2036
  
|
最近,有个项目要用到类似DOCIN的文档转换和阅读的功能,于是就开始找相关的资料,最后总结出2种解决办法,以下就来探讨下两种方法的各自实现。 G3 V( g* ~! |& o9 X* r
第一种:通过FLASH PAPER来转换DOC文档直接生成SWF,这个很简单,下载一个FLASH PAPER 安装就可以调用,我们在程序里是用CMD调用的,调用的命令是:C:\Program Files\Macromedia\FlashPaper 2\FlashPrinter.exe xxx.ppt -o xxx.swf,不过经我测试,这个东西有很大的缺陷,不能并发几个一起用,也就是说只能同时转换一个文档,我不知道有没有其他方法能够解决这个问题,如果你有解决的办法,也请告诉我,FLASH PAPER的转换原理是这样的:建立一个虚拟打印机,打开文档,虚拟打印,取得打印的内容直接生成SWF,所以转换一个文档就需要一个虚拟打印机的运行~~~中间会弹出打印和打开文档的窗口。这个方案不符合我的要求,直接PASS。
1 u, m# q& X/ e+ S l第二种:利用开源的软件OPENOFFICE把文档转换成PDF,在通过SWFTOOLS把PDF转换成SWF,其中要用到的东西比较多,下面一一道来。这个方案可以在微软的系统下运行,也可以在*NUX下运行,我是CENTOS5.5字符界面下跑的,下面是过程:8 z: |& ?( z" O" Q/ K+ v, U% A
首先安装装CENTOS5.5系统,安装过程就不再罗嗦了,我是最简安装的
9 c( q2 q J5 K) l装好系统后,就是把需要的软件包都下载下来:我们用到的软件包有; w1 ]/ y0 z5 q- _; u- M( g
# wget http://cds.sun.com/is-bin/INTERS ... AEpabADyW5K&OrderID=JRuJ_hCvMlQAAAEpWrADyW5K&ProductID=guBIBe.oc_wAAAEnaDJHqPYe&FileName=/jdk-6u20-linux-i586.bin
5 [: D5 @0 ?: l# wget http://download.services.openoff ... nstall_zh-CN.tar.gz
/ @8 f" }. Q* m8 Z5 x# wget http://www.swftools.org/swftools-0.9.1.tar.gz
& T6 m+ _- B0 E5 y8 a4 D" w( E: Lwget http://apache.etoak.com/tomcat/t ... omcat-6.0.26.tar.gz2 F8 ?9 A0 B$ Z, }7 f a5 q) l
还有一个openoffice的插件,我们所有的应用都基于它:jodconverter7 B3 r7 V s3 l6 ?; \) N
下载地址是:http://sourceforge.net/projects/jodconverter/files/3 Z/ Z8 O; p! F3 y
好了,软件包准备好,下面就开工了⌒_⌒0 @; |8 X( ?% Z( ~5 U
先装JDK & tomcat,安装过程就不罗嗦了,不会的google下
2 d) H+ T# B8 Y3 r4 ^! ]- Y, _0 J接下来,安装openoffice,
2 _) u) ]0 ?5 F( d4 d+ F: T4 S# tar zxvf OOo_3.2.0_LinuxIntel_install_zh-CN.tar.gz: H" h7 k; M* z* N, G; Y+ r. {
#cd OOO320_m12_native_packed-1_zh-CN.9483/RPMS
2 {4 k" }; @' b+ ?; B# A$ ^1 \7 ^" I#rpm -ivh –force –nodeps *.rpm
o4 B7 Q, `) j ?, n% ]' T7 h' P5 g. ~就这样,OPENOFFICE就安装好了,如果你的系统没有中文字体,就把中文字体安装上,否则转出来的PDF会乱码 9 c# D% [$ u+ h$ a" z
装好openoffice后,接着安装swftools,swftools安装也比较简单,! E3 A g: {5 t2 E
# tar zxvf swftools-0.9.1.tar.gz t, \6 T/ h4 |7 w' L: H! o
#cd swftools-0.9.1
; _8 G |" ^2 Z' x& u# ./configure –prefix=/usr/local/swftools/
, T5 \+ Z. W. g) O, a5 _( f& s# make && make install' ~% l% Q1 O+ s# e. Q
到此,所有该安装的软件都已经安装好了,由于我现在是利用/ L+ G/ g: q9 X' Q
下面开始把所需服务都启动起来,
4 m# a% i7 i1 i1 R先把OPENOFFICE启动起来,我们是当作服务启动的,启动命令如下3 i- }% B V, I2 l6 u/ o% \. R
#/opt/openoffice.org3/program/soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &: u( a+ f" T" N% A" c/ Y+ z( H' m
接着把TOMCAT 启动,把jodconverter做为WEB APP转换服务的,所以先把下灾下来的jodconverter-webapp-2.2.2.zip解压,把jodconverter-webapp-2.2.2.war放到TOMCAT根目录,运行TOMCAT后,会自动生成APP文件夹,为了书写简单,我们改名为converter,假设你的服务器IP为:192.168.1.123,TOMCAT端口为8080,浏览器输入:http://192.168.1.123:8080/converter/,看看转换程序运行正常不,启动正常的话,我们的工作就完成一大半了。
' D9 }' O6 u- G, b主要的工作已经做完,现在剩下的就是怎么应用了,我是利用PHP调用转换的程序的,用户通过PHP上传文件,4 m# y$ q+ L1 L; N
判断文件类型,如果是JPG,GIF,PNG,PDF等利用SWFTOOLS可以直接转换的文件,就直接转换,否则,通过http://192.168.1.123:8080/converter/把文件转换为PDF,再利用SWFTOOLS把PDF转为SWF,值得注意的是,PDF转SWF时候,注意把版本转化为9,如果转为9以下的版本的话,AS3操作起来会很麻烦,SWFTOOLS转换的命令如下: f! j: u9 V2 R+ J8 n, c* l
#/usr/local/swftools/bin/pdf2swf -T 9 XXX.pdf XXX.swf; k& I1 N8 Y" C& `
其中-T是版本信息,具体可以通过#/usr/local/swftools/bin/pdf2swf -help查询/ e0 A7 l+ L9 w8 l
现在整个过程完成3/4了,剩下的就是用AS3写一个东西出来,操作PDF生成的SWF,生成的SWF文件格式是这样的,每一页的文档会生成一个movieclip,具体的代码我就不贴不出来了,这个相信也不难。
2 F3 b8 S9 L4 }本来想放一个在线的DEMO的,不过我这个VPS配置太低,512M的内存,还不能自己添加swap,跑了PHP+MYSQL,就跑不动这个了,这个应用要求的内存和CPU还是蛮高的。
8 t) z1 s$ a: K" m: _) z8 O* E7 z4 H! H Q比较两种方法,第一种转换出来的东西应该更好,而且支持的格式更多,理论上讲,只要能打印的东西,都能转换,只是不能并发,所以意义不大,如果能利用这个原理,自己写一个转换服务器,解决并发问题,那第一种应该是最合适的。. B r5 h& L% V$ a
第二种只能转换openoffice支持的格式,对服务器的要求非常的高。不知道DOCIN和BAIDU文档是怎么样的解决方案。8 K( S% u/ p8 n, b5 v
|
|