centos安装openoffice将doc、ppt、txt、xls等转换成pdf,再转换成swf用‍FlexPaper显示

前端之家收集整理的这篇文章主要介绍了centos安装openoffice将doc、ppt、txt、xls等转换成pdf,再转换成swf用‍FlexPaper显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

教程

  1. 下载:http://www.openoffice.org/download/other.html 下载中文的openoffice和英文的sdk,相关文件上传百度网盘中:linux>centos>doc2view

  2. 安装openoffice

  1. tar xf Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_zh-CN.tar.gz
  2. #到rpm文件夹中
  3. rpm -ivh *.rpm --nodeps --force
  4. #后台启动
  5. /opt/openoffice4/program/soffice -headles -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

在CentOs下面会缺少黑体和宋体的,直接找到Windows下面的字体目录把黑体、宋体等常见字体复制进去到目录:/opt/openoffice4/share/fonts/truetype/重启生效

  1. 安装openoffice sdk
  1. tar xf Apache_OpenOffice-SDK_4.1.3_Linux_x86-64_install-rpm_en-US.tar
  2. rpm -vih *.rpm
  1. 安装jodconverter,下载地址(先安装JAVA环境),java下载
  1. #安装java,下载rmp格式的
  2. rpm -vih jre-8u111-linux-x64.rpm
  3. #查看版本
  4. java -version
  5. whereis java
  6. #jodconverter下载解压后移动到/opt/即可,无需安装

这个工具太老了且必须安装java才能使用,有些word转换成pdf会有问题,比如遇到单页的word转换后无法显示出来,可以考虑使用替代品unconv
安装和使用:

  1. #unconv安装,yum无法安装,没有源
  2. yum install git
  3. cd /usr/local/
  4. git clone https://github.com/dagwieers/unoconv.git
  5. #openoffice安装
  6. 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
  7. #ppt转换不成功,需要执行一下命令方可
  8. yum install -y libreoffice.x86_64
  9. #中文字体安装
  10. yum install font-chinese cabextract rpm-build -y
  11. #将中文字体上传到/usr/share/fonts/chinese,然后设置所有字体权限
  12. cd /usr/share/fonts
  13. mkdir chinese
  14. #上传所有中文字体到/usr/share/fonts/chinese文件夹中
  15. cd /usr/share/fonts/chinese/
  16. chmod 644 *
  17. mkfontscale
  18. mkfontdir
  19. fc-cache -f -v
  20. #查看相关信息
  21. /usr/local/unoconv/unoconv -V
  22. #转换命令,/usr/local/unoconv/unoconv -f pdf -o pdfPath docPath
  23. /usr/local/unoconv/unoconv -f pdf test.docx

如果转换ppt失败,请确认libreoffice.x86_64是否安装,安装后需要重启 解压中文字体,中文命令乱码问题参考

  1. 转换命令
  1. java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/test.doc /tmp/test.pdf
  1. 将pdf转换成swf并用‍FlexPaper显示出来

备注

  1. word文档中的非本地插入的图片和目录会丢失,需在客户端转换pdf

  2. 后续需要将openoffice设置成/etc/rc.local方式的开机启动,以防服务器重启失效

  3. 文档转pdf然后pdf转swf脚本,/usr/local/bin/doc2view,脚本内容若下:

  1. #!/bin/sh
  2. #doc转换成pdf,在PHP的www用户下执行java命令需要sudo,pdf2swf不需要sudo权限
  3. sudo /usr/bin/java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar $1 $2 && /usr/local/swftools/bin/pdf2swf -T 9 $2 -o $3 && chown www:www $2 $3 && chmod 644 $2 $3
  4. #注意pdf2swf加上-T 9,设定在flashplayer 9下,否则会出现只有一页的文档无法显示的情况

注意有些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

  1. PHP调用
    PHP调用上面的doc2view命令,脚本使用了java命令,需要将PHP-fpm的运行用户www添加到sudo
    NOPASSWD: ALL表示不用输入根密码
  1. chmod u+w /etc/sudoers
  2. vi /etc/sudoers
  3. #找到root ALL=(ALL) ALL,复制一行,改成以下内容,注意www是PHP-fpm的运行用户
  4. www ALL=(ALL) NOPASSWD: ALL
  5. #保存后再去掉写权限
  6. chmod u-w /etc/sudoers

然后PHP执行代码的时候以sudo开头即可 PHP代码,最后加上 & 防止脚本被挂起等待:

  1. $cmd = "/usr/local/bin/doc2view ../../uploadfile/test.docx ../../uploadfile/test.pdf ../../uploadfile/test.swf > /dev/null 2>&1 &";
  2. pclose(popen($cmd,"r"));

参考

  1. http://zhuzhichao.com/post/2013/08/linux-txt-doc-ppt-xls-to-pdf-to-swf-to-png/
  2. pdf转在线预览swf格式
  3. FlexPaper二次开发、编译导出

猜你在找的CentOS相关文章