整体思路如下:
实现步骤: 1. DOC上传 2. DOC转成PDF 3. PDF转成SWF 4. 显示
基于对Linux环境引入openoffice sdk + pdf2swf tool,分两个步骤,先利用openoffice sdk把文档统一转成pdf,然后利用pdf2swf tool把pdf转成swf
实现过程
要实现DOC转成PDF,在LINUX下面有Openoffice可以实现。
那么首先需要的是安装Openoffice这个东东。
1. 安装openoffice3,这个安装过程很纠结,遇到过各种问题,因为先后在几台服务器上安装过,最顺利的安装方法如下,如果遇到问题请看前面的文章有讲openoffice的安装。
1. tar zxvf OOo_3.3.0_Linux_x86-64_install-rpm-wJRE_
2. cd RPEM
3. rpm -ivh *.rpm --nodeps –force
4. 安装后的默认目录是在:/opt/目录下面
5. 启动服务:
6. /3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
在CentOs下面会缺少黑体和宋体的,直接到Windows下面的字体目录把黑体和宋体复制进去到目录
1. //basis3.3/share/fonts/truetype/
2. 需要重启后才会生效
2. 安装OpenOfficeSDK3.3
1. tar zxvf OOo-SDK_3.3.0_Linux_x86-64_install-rpm_
2. cd OOO330_m20_native_packed-1_en-US.9567/RPMS/
3. rpm -vih *.rpm
3. 安装jodconverter.2.2.2 ,安装了这个之后就已经可以实现DOC转PDF了。
这个安装很简单,直接上网站下一个这个东东回来。
解压,复制到一个目录里面去,就能直接用了,调用它里面的/lib/jodconverter-cli-2.2.2.jar这个玩意儿就行,可以直接运行命令测试:
1. java -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar 1.doc 1.pdf
4. 安装swftools
中文支持安装:
1. mkdir –p /usr/share/xpdf
2. cd /usr/share/xpdf/
3. 下载中文支持及字体库
4. wget ftp://ftp.foolabs/pub/xpdf/
5. wget inxs/download/font.zip
6. tar zxvf
7. unzip font.zip
8. f xpdf-chinese-simplified/CMap/ cd /usr/share/xpdf/xpdf-chinese-simplified
9. 编辑,加入新增的字体
10.
11. vim add-to-xpdfrc
12. 内容如下:
13. cidToUnicode Adobe-GB1 /usr/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode
14. unicodeMap ISO-2022-CN
15. /usr/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap
16. unicodeMap EUC-CN
17. /usr/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
18. unicodeMap GBK
19. /usr/share/xpdf/chinese-simplified/GBK.unicodeMap
20. cMapDir Adobe-GB1
21. /usr/share/xpdf/chinese-simplified/CMap toUnicodeDir
22. /usr/share/xpdf/chinese-simplified/CMap
23. displayCIDFontTT Adobe-GB1 /usr/share/xpdf/chinese-simplified/f
24. 保存后退出
SwfTool安装:
1. cd /usr/local/wenku
2. wget /swftools-0.9.
3. tar zxvf swftools-0.9.
4. cd swftools-0.9.1
5. ./configure 6)make
6. make install
7. 测试一下是否可用
8. pdf2swf -o /path/output.swf -T -z -t -f /path/yourpdffile.pdf -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9
如果测试成功,那么就已经OK一大半了,就是显示的问题了。
5. 用FlexPaper实现在线预览
这个是网上下载吧,看着demo改下JS就行了,里面是用的JS读取SWF的路径,这个简单吧,不讲了。
PHP来调用LINUX命令实现转换,可能会遇到一个问题说PHP没有执行权限,注意把PHP的用户改成权限也就是nobody这个用户的权限。
下面是我自己写的代码,PHP初学不久,不够精简,仅供参考
Yii框架中文件转换功能,DOC转SWF
1. <?php
2. /**
3. 文件转换
4. oscar 2011-11-25 jincan.liu@gmail
5. */
6. class converter extends CWidget{
7.
8. public function run($file)
9. {
10.
11. $filesArr = array('pdf','doc','docx','xls','xlsx','ppt','pptx','txt');
12. //文件上传并转换
13. if($_FILES["file"] && $_FILES["file"]["error"] <=0 ){
14.
15. $fileName = iconv('UTF-8','gb2312',$_FILES["file"]["name"]);
16. $types = explode('.',$fileName);
17. $typesIf = $types[1];
18. //改名为时间戳
19. $types[0] = time();
20. $fileName = $types[0].'.'.$types[1];
21. $filetype = $typesIf;
22.
23. //限制上载类型
24. if(!in_array($typesIf,$filesArr)){
25. echo '<script type="text/javascript">alert("upload file types in : pdf,doc,docx,xsl,xlsx,ppt,pptx,txt");location.href=location.href;</script>';
26. }
27. /*
28. function check_is_chinese($s){
29. return preg_match('/[\x80-\xff]./', $s);
30. }
31. //检测中文文件名
32. if (check_is_chinese($fileName)) {
33. $types[0] = time();
34. $fileName = $types[0].'.'.$types[1];
35. }
36. */
37.
38. //更改路径
39. if($typesIf=='pdf'){
40. $path = 'converter/files/pdf/';
41. }else{
42. $path = 'converter/files/doc/';
43. }
44.
45. if (file_exists($path . $fileName)){
在linux下安装vim的命令46. echo '<script type="text/javascript">alert("文件已经存在了");location.href=location.href;</script>';
47. }else{
48. move_uploaded_file($_FILES["file"]["tmp_name"], $path.$fileName);
49. //var path
50. $docpath = '/data/oa/frontend/www/converter/files/doc/';
51. $pdfpath = '/data/oa/frontend/www/converter/files/pdf/';
52. $swfpath = '/data/oa/frontend/www/converter/files/swf/';
53.
54. if (file_exists($path . $fileName)){
55. //执行转换
56. if($typesIf=='pdf'){ //PDF 转SWF
57. $pdf = $fileName;
58. $swf = str_replace('pdf','swf',$pdf);
59. exec('/usr/local/wenku/swftools/bin/pdf2swf -o '.$swfpath.$swf.' -T -z -t -f '.$pdfpath.$pdf.' -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9');
60. $path2 = $pdfpath.$pdf;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论