centos安裝openoffice將doc、ppt、txt、xls等轉換成pdf,再轉換成swf用FlexPaper顯示

教程

  1. 下載:http://www.openoffice.org/download/other.html 下載中文的openoffice和英文的sdk,相關文件已上傳到百度網盤中:linux>centos>doc2viewphp

  2. 安裝openofficehtml

tar xf Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_zh-CN.tar.gz
#到rpm文件夾中
rpm -ivh *.rpm --nodeps --force
#後臺啓動
/opt/openoffice4/program/soffice -headles -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

在CentOs下面會缺乏黑體和宋體的,直接找到Windows下面的字體目錄把黑體、宋體等常見字體複製進去到目錄:/opt/openoffice4/share/fonts/truetype/重啓生效java

  1. 安裝openoffice sdk
tar xf Apache_OpenOffice-SDK_4.1.3_Linux_x86-64_install-rpm_en-US.tar
rpm -vih *.rpm
  1. 安裝jodconverter,下載地址(先安裝JAVA環境),java下載
#安裝java,下載rmp格式的
rpm -vih jre-8u111-linux-x64.rpm
#查看版本
java -version
whereis java
#jodconverter下載解壓後移動到/opt/便可,無需安裝

這個工具太老了且必須安裝java才能使用,有些word轉換成pdf會有問題,好比遇到單頁的word轉換後沒法顯示出來,能夠考慮使用替代品unconv
安裝和使用:node

#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是否安裝,安裝後須要重啓 解壓中文字體,中文命令亂碼問題參考linux

  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文檔中的非本地插入的圖片和目錄會丟失,需在客戶端轉換pdfgit

  2. 後續須要將openoffice設置成/etc/rc.local方式的開機啓動,以防服務器重啓失效github

  3. 文檔轉pdf而後pdf轉swf腳本,/usr/local/bin/doc2view,腳本內容若下:centos

#!/bin/sh
#doc轉換成pdf,在php的www用戶下執行java命令須要sudo,pdf2swf不須要sudo權限
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
#注意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表示不用輸入根密碼
chmod u+w /etc/sudoers
vi /etc/sudoers
#找到root    ALL=(ALL)       ALL,複製一行,改爲如下內容,注意www是php-fpm的運行用戶
www     ALL=(ALL)       NOPASSWD: ALL
#保存後再去掉寫權限
chmod u-w /etc/sudoers

而後php執行代碼的時候以sudo開頭便可 php代碼,最後加上 & 防止腳本被掛起等待:less

$cmd = "/usr/local/bin/doc2view ../../uploadfile/test.docx ../../uploadfile/test.pdf ../../uploadfile/test.swf > /dev/null 2>&1 &";
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二次開發、編譯導出
相關文章
相關標籤/搜索