教程
-
下载:http://www.openoffice.org/download/other.html 下载中文的openoffice和英文的sdk,相关文件已上传到百度网盘中:
linux>centos>doc2view
-
安装openoffice
在CentOs下面会缺少黑体和宋体的,直接找到Windows下面的字体目录把黑体、宋体等常见字体复制进去到目录:/opt/openoffice4/share/fonts/truetype/
重启生效
- 安装openoffice sdk
- tar xf Apache_OpenOffice-SDK_4.1.3_Linux_x86-64_install-rpm_en-US.tar
- rpm -vih *.rpm
- #安装java,下载rmp格式的
- rpm -vih jre-8u111-linux-x64.rpm
- #查看版本
- java -version
- whereis java
- #jodconverter下载解压后移动到/opt/即可,无需安装
这个工具太老了且必须安装java才能使用,有些word转换成pdf会有问题,比如遇到单页的word转换后无法显示出来,可以考虑使用替代品unconv
安装和使用:
- #unconv安装,yum无法安装,没有源
- yum install git
- cd /usr/local/
- git clone https://github.com/dagwieers/unoconv.git
- #openoffice安装
- yum install -y openoffice.org-core openoffice.org-headless openoffice.org-pyuno openoffice.org-sdk openoffice.org-writer openoffice.org-calc openoffice.org-draw libreoffice-langpack-zh-Hans.x86_64
- #ppt转换不成功,需要执行一下命令方可
- yum install -y libreoffice.x86_64
- #中文字体安装
- yum install font-chinese cabextract rpm-build -y
- #将中文字体上传到/usr/share/fonts/chinese,然后设置所有字体权限
- cd /usr/share/fonts
- mkdir chinese
- #上传所有中文字体到/usr/share/fonts/chinese文件夹中
- cd /usr/share/fonts/chinese/
- chmod 644 *
- mkfontscale
- mkfontdir
- fc-cache -f -v
- #查看相关信息
- /usr/local/unoconv/unoconv -V
- #转换命令,/usr/local/unoconv/unoconv -f pdf -o pdfPath docPath
- /usr/local/unoconv/unoconv -f pdf test.docx
如果转换ppt失败,请确认libreoffice.x86_64是否安装,安装后需要重启 解压中文字体,中文命令乱码问题参考
- 转换命令
- java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/test.doc /tmp/test.pdf
备注
-
word文档中的非本地插入的图片和目录会丢失,需在客户端转换pdf
-
后续需要将openoffice设置成/etc/rc.local方式的开机启动,以防服务器重启失效
-
文档转pdf然后pdf转swf脚本,
/usr/local/bin/doc2view
,脚本内容若下:
注意有些pdf文档提示Unknown character collection 'Adobe-GB1'
,需要使用xpdf-chinese-simplified,使用方法 将这个脚本设置可执行:chmod +x /usr/local/bin/doc2view
使用命令: /usr/local/bin/doc2view /tmp/test.docx /tmp/test.pdf /tmp/test.swf
然后PHP执行代码的时候以sudo
开头即可 PHP代码,最后加上 & 防止脚本被挂起等待:
- $cmd = "/usr/local/bin/doc2view ../../uploadfile/test.docx ../../uploadfile/test.pdf ../../uploadfile/test.swf > /dev/null 2>&1 &";
- pclose(popen($cmd,"r"));