使用php實現百度文庫功能,網上搜索到的方案,實現doc轉pdf,pdf轉swf,而後顯示出來。 php
這裏簡單的記錄下,【doc轉pdf,pdf轉swf】兩個功能的搭建流程。 html
使用到下列程序(文件): java
實現原理:調用jodconverter的包轉換doc爲pdf,而jodconverter會去鏈接OpenOffice的soffice服務,實現轉換。 linux
二者在運行時都須要java環境的支持!而字體文件能夠解決doc轉爲pdf時中文亂碼問題! nginx
字體文件須要自行打包Windows系統下字體文件(也許能夠所有打包),先上傳到服務器上,後面會用到,假設文件名爲fonts.zip vim
安裝java環境 windows
JAVA環境的安裝很簡單,首先須要確認下系統中是否安裝了java,而且確認java版本>=1.6。 安全
#直接輸入java -version java -version #若是安裝了java,將會顯示java的版本,若是麼有,那趕忙安裝吧!
安裝方法可使用yum安裝,或者在java.com上下載rpm包、解壓即用的壓縮包。這裏我使用解壓即用的壓縮包。 bash
java.com界面截圖: 服務器
我把文件放在/opt/java/jre下,那麼能夠這樣來顯示下java的版本:
/opt/java/jre/bin/java –version
添加環境變量:
vim /etc/profile #在文件內容最後寫上: PATH=/opt/java/jre/bin:$PATH export PATH #保存退出後,使用source使環境變量當即生效 source /etc/profile
這樣java環境的搭建就完成了!
安裝openoffice
注意,最新的openoffice 3.4.1版本再也不捆綁java環境,因此須要手動搭建java環境。
首先,下載最新的openoffice安裝包,地址:http://www.openoffice.org/download/other.html#tested-full,選擇適合本身的版本:
安裝包大概140多M大小,我選擇的簡體中文,Linux86_64 RPM包的文件名爲:Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
安裝其實很是的簡單:
#進入解壓後的RPMS目錄 cd /opt/setup/openoffice-setup/zh-CN/RPMS #使用rpm命令安裝 rpm -ivh *.rpm
安裝截圖:
默認安裝在/opt目錄下,有兩個文件夾:openoffice.org和openoffice.org3。
如今咱們須要把已經準備好的字體文件fonts.zip解壓到這個目錄下:/opt/openoffice.org/basis3.4/share/fonts/truetype。
解壓完成後,OpenOffice環境就已經完成了,如今讓咱們來啓動openoffice。
我在/opt/openoffice.org3/目錄下新建了文件:sofficed。
內容爲:
#! /bin/bash /opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
記得修改sofficed文件的權限爲755,便於程序調用執行!
#啓動openoffice /opt/openoffice.org3/sofficed #將上面的命令寫入/etc/rc.local文件中,便可開機啓動了!
檢查是否成功啓動:
#進程查看 ps -ef | grep soffice #端口查看 netstat -tunlp | grep 8100
若能看到soffice相關信息便成功了!
安裝jodconverter
此貨的安裝也很簡單,下載安裝包,解壓便可!
下載地址:http://sourceforge.net/projects/jodconverter/files/JODConverter/
我把文件放在了/opt/jodconverter下。
固然了,首先得準備一個doc文件,而後使用下面這個命令測試:
java -jar /opt/jodconverter/lib/jodconverter-cli-2.2.2.jar doc文件路徑 pdf文件路徑
下載生成的pdf文件,打開看看吧。
使用到的程序(文件)
pdf轉swf的過程相對簡單一點,只須要調用swftool程序的pdf2swf程序,xpdf-chinese-simplified和font.zip能夠解決中文亂碼問題!
swftool程序須要編譯安裝,這裏先固定一下安裝目錄爲:/opt/swftool。
字體文件安裝
下載xpdf-chinese-simplified和font.zip文件,而後解壓。
mkdir /opt/swftool cd /opt/swftool wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz
wget http://www.nginxs.com/download/font.zip #解壓兩個壓縮包 tar zxvf xpdf-chinese-simplified.tar.gz unzip font.zip #將font.zip解壓出來的兩個字體文件移到xpdf-chinese-simplified/CMap/目錄下 mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/ #修改xpdf-chinese-simplified目錄下的add-to-xpdfrc文件,內容以下: cidToUnicode Adobe-GB1 /opt/swftool/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode unicodeMap ISO-2022-CN /opt/swftool/xpdf-chinese-simplified/ISO-2022-CN.unicodeMap unicodeMap EUC-CN /opt/swftool/xpdf-chinese-simplified/EUC-CN.unicodeMap unicodeMap GBK /opt/swftool/xpdf-chinese-simplified/GBK.unicodeMap cMapDir Adobe-GB1 /opt/swftool/xpdf-chinese-simplified/CMap toUnicodeDir /opt/swftool/xpdf-chinese-simplified/CMap displayCIDFontTT Adobe-GB1 /opt/swftool/xpdf-chinese-simplifies/CMap/gkai00mp.ttf
字體文件安裝完成。
Swftool安裝
首先安裝下swftool必要的插件程序
yum install zlib-devel libjpeg-devel giflib-devel freetype-devel
若是安裝過了,自動忽略掉,只安裝沒有的。
開始安裝swftool:
tar vxzf swftools-2012-10-15-1307.tar.gz cd swftools-2012-10-15-1307 ./configure --prefix=/opt/swftool make make install
若是沒有異常信息,那就ok了。
使用這個命令測試,一樣在使用php代碼時也能夠這麼調用:
/opt/swftool/bin/pdf2swf -o swf文件路徑 -T -z -t -f pdf文件路徑 -s languagedir=/opt/swftool/xpdf-chinese-simplified -s flashversion=9
須要注意languagedir這個參數。
其餘的好像沒什麼了,就這麼簡單。
參考了這些文章:http://www.itokit.com/2012/0914/74747.html
若是開啓了Selinux,那麼在exec函數中調用/var/www/html外的文件很容易被禁止,致使exec函數執行失敗。
關閉Selinux:
#臨時關閉 setenforce 0 #永久關閉 vim /etc/sysconfig/selinux #將SELUNX的值修改成disabled,重啓生效 SELINUX=disabled不關閉selinux,那麼就要修改所調用文件的安全環境上下文。
這裏調用java時被selinux阻止了,那麼能夠這麼作:
cd /opt #將java目錄的安全環境上下文還原 restorecon -R -v java這樣Seliux就不會再阻止httpd程序訪問java程序了。