1. 程式人生 > >Ubuntu 伺服器 PHP實現word、excel、ppt、pdf 等文件線上閱讀功能的實現

Ubuntu 伺服器 PHP實現word、excel、ppt、pdf 等文件線上閱讀功能的實現

1、實現原理思路

要實現 word 等文件線上閱讀,需要將文件轉換成 swf 的 flash 檔案,然後結合 flexpaper ,在頁面上閱讀顯示。

這個轉換過程有些複雜,首先需要我們把上傳的檔案轉換成 pdf 格式的檔案,然後在把 pdf 格式的檔案轉換為 swf 的格式。這個轉換過程需要三個軟體:

openoffice 軟體可以把 word 等格式的檔案轉換成 pdf 

jodconverter 軟體是java 的開放文件轉換器,實際上是 jodconverter 呼叫openoffice 軟體來轉換檔案,用這個軟體還需要系統支援Java 環境,需要安裝Java JDK

swftools 的 pdf2swf  可以把 pdf 格式的檔案轉換成 swf 格式

2、安裝軟體

系統環境:Ubuntu 12.04-server

下載軟體:

Java JDK (最好先安裝Java 環境,安裝openoffice 可能會用的,我是先安裝的 openoffice ,但是安裝時報個跟Java相關的錯誤,然後我用 apt-get install openoffice.org-java-common 這個就沒什麼問題了,如果先安裝Java,就不用在安裝這個了)

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/bin"

要使剛剛的配置檔案生效,需要執行下:source /etc/environment

openoffice 3.4.1 版本:

wget  http://jaist.dl.sourceforge.net/project/openofficeorg.mirror/localized/zh-CN/3.4.1/Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-deb_zh-CN.tar.gz

openoffice SDK

wget  http://jaist.dl.sourceforge.net/project/openofficeorg.mirror/stable/3.4.1/Apache_OpenOffice_incubating-SDK_3.4.1_Linux_x86-64_install-deb_en-US.tar.gz

JODConverter

wget   http://jaist.dl.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip

swftools 0.9.1 版本

wget   http://www.swftools.org/swftools-0.9.1.tar.gz

3、安裝軟體

安裝順序為Java JDK ,openoffice主程式,openoffice sdk,jodconverter(Java JDK的安裝參照上面)

第一步安裝 openoffice 主程式:

tar -zxvf  Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-deb_zh-CN.tar.gz   解壓縮

cd  zh-CN/DEBS  進入到openoffice 的程式目錄

dpkg  -i   *.deb  安裝所有.deb 格式的檔案

第二步安裝 openoffice sdk :

tar  -zxvf  Apache_OpenOffice_incubating-SDK_3.4.1_Linux_x86-64_install-deb_en-US.tar.gz  解壓縮檔案

cd  en-US/DEBS   進入到程式安裝檔案目錄

dkpg  -i  *.deb  安裝deb 檔案

安裝位置:openoffice 軟預設安裝在  /opt/openoffice 和  /opt/openoffice3 下面

啟動服務:/opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

可以用 netstat -a | grep 8100   命令來檢視埠,或者 用 ps -ef|grep soffice 檢視程式程序

然後將openoffice 設定為開機啟動:

將 /opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard & 新增到  /etc/rc.local 檔案裡

第三步安裝 jodconverter-2.2.2:

JODConverter其實不用安裝 解壓了就行,安裝了這個之後就已經可以實現DOC轉PDF了。

unzip jodconverter-2.2.2.zip  解壓

mv  jodconverter-2.2.2  /opt  移動到 /opt 目錄下

接下來,就可以測試將doc xls pptx 等檔案轉換為 pdf 檔案了:

java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/download/1.doc  /home/download/1.pdf

但是現在還有一個問題,你會發現如果你轉換的是 中文的文件,轉換完的pdf 檔案會顯示亂碼,原因是openoffice 軟體沒有安裝中文字型:

解決方法:給 openoffice 軟體安裝 宋體、黑體等字型,可以直接開啟你係統的 C盤的 C:\Windows\Fonts 目錄下面的 simsong.ttf simhei.ttf 等中文字型上傳到openoffice的字型目錄 /usr/share/fonts/truetype/openoffice 目錄下,即可

第四步安裝 swftools :

安裝 swftools 需要依賴 freetype、jpeglib 兩個類庫:

下載 freetype : wget  http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.4.12.tar.gz

下載 jpeglib :   wget  http://www.ijg.org/files/jpegsrc.v9.tar.gz

這兩個檔案分別解壓縮後,進入資料夾,編譯原始碼安裝即可:

tar  -zxvf  freetype-2.4.12.tar.gz

cd  freetype-2.4.12

./configure

make 

make install

jpegsrc.v9.tar.gz 安裝同 freetype

接下來安裝swftools :

tar -zxvf  swftools-0.9.1.tar.gz

cd  swftools-0.9.1

./configure 

make 

make install

swftools 安裝完成,接下來安裝swftools 的 xpdf 和 字型:

wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz

wget http://www.nginxs.com/download/font.zip

解壓 xpdf-chinese-simplified.tar.gz 和 font.zip 並修改配置檔案

tar -zxvf  xpdf-chinese-simplified.tar.gz

unzip  font.zip 

mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/

把 xpdf-chinese-simplified 移動到 /usr/share/xpdf

mkdir -p /usr/share/xpdf

mv xpdf-chinese-simplified /usr/share/xpdf

修改配置檔案

cd   /usr/share/xpdf/xpdf-chinese-simplified

vim  add-to-xpdfrc

將下面的內容覆蓋掉add-to-xpdfrc檔案中相同的部分

cidToUnicode    Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMap      ISO-2022-CN     /usr/share/xpdf/xpdf-chinese-simplified/ISO-2022-CN.unicodeMap
unicodeMap      EUC-CN          /usr/share/xpdf/xpdf-chinese-simplified/EUC-CN.unicodeMap
unicodeMap      GBK             /usr/share/xpdf/xpdf-chinese-simplified/GBK.unicodeMap
cMapDir         Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/CMap
toUnicodeDir                    /usr/share/xpdf/xpdf-chinese-simplified/CMap
displayCIDFontTT        Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/CMap/gkai00mp.ttf

OK  swftools 現在已經安裝完成,可以轉換個pdf 檔案測試下:

pdf2swf -o 1.swf -T -z -t1.pdf -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9

OK 在PHP 程式中可以在上傳完成後,呼叫這兩個命令把文件轉換為最終的 swf 檔案,前端頁面結合 flexpaper 顯示即可