加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在线文档的协同浏览 doc pdf ppt ---> swf 的转换

(2010-12-07 17:09:28)
标签:

协同浏览

it

分类: 程序开发与测试

                                       作者:吴边

 

以前我刚工作的时候,做一个视频的项目,用的是flash media server 和flash。其中有个需求是在线的
文档协同浏览,也就是,用户上传一个word文档,ppt,pdf之类的,然后在浏览器里显示出来,还可以在上面
涂涂画画的,并且是所有用户都能看见的。当时为文档的转换很头疼,一直也没有好的方法,不过这个项目最
后也没成功。

以前的那种转换的思路不是很好,是将doc转换为图片,然后再操作,用了一个c库,还非要在windows上搞
现在竟然又要做一个在线文档转换和协同浏览的功能,不过换了一种思路,而且方法也成熟可靠很多。

现在的思路是  doc,ppt,excel ,txt --->pdf --->分割pdf ---->pdf --->swf 。这样就可以分别操作每一
页的文档了。

首先 我们要做的就是把doc转换为pdf ,这个用OpenOffice很方便的。服务器用的是linux,我装的是ooo3。装ooo的时候记得装pyuno bridge组件。然后我们需要用到unoconv,这其实是一个python文件,调用ooo来转换各种文档,比如,将a.doc转换为pdf ,那么只需要 unoconv -f pdf a.doc 就会生成一个a.pdf 。在使用unoconv的时候有两个需要注意的问题。

第一个就是需要 x-server ,如果没有x,在转换的时候会报这样的错误:

/usr/lib/openoffice.org/program/soffice.bin X11 error: Can't open display:

Set DISPLAY environment variable, use -display option

or check permissions of your X-Server

但是我是用x桌面的,在转换的时候仍然会有这样的错误,解决的方法是导入环境变量 export DISPLAY=localhost:1 ,这样就能成功转换,但是,作为服务器是不开 x 的。解决方法是虚拟一个x 桌面 ,
Xvfb :1 -screen 0 800x600x24&

还有一个问题,每次从windows上传txt格式的文档,openoffice都报错说不能识别。我认为是编码的问题,于是我在文件上传的过程中都将文本从gb2312 转换为 utf-8 , 但是仍然不能识别。后来发现竟然是windows的换行符 。把windows的换行符替换为 \n ,就解决了这个问题。

接下来我们需要分割pdf,每一页一个小pdf,我用的是java的iText库。

最后把pdf转换为swf ,用swftools,有deb格式的,可以 apt-get install swftools ,如果用其他版本的系统,只有自己编译了。编译的时候需要一些开发库 libgif-dev jpeglib-dev freetype-dev 之类的,也都要装上。剩下的 make和make install 就可以了。编译好以后可以得到一些可执行程序,其中pdf2swf就是我们需要的pdf2swf path/xx.pdf -o path/xx.swf 就能转换了


    能够转换以后,写程序串联起来,分别调用这些命令,就可以了。我是用python写的,经过一些简单的测试,效果不错。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有