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,就不用在安裝這個了)

到這個地址去下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 找好相應的 Linux 版本,這裏我下載的 jdk-7u45-linux-x64.tar.gz 版本,然後解壓縮放到相應位置(我放到 /usr/java),然後修改系統的配置文件 /etc/environment ,將剛剛的Java 路徑添加的 PATH 裏面:

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

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

這裏有片詳細的安裝文章,可以參考:http://www.cnblogs.com/fnng/archive/2013/01/30/2883815.html

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 顯示即可


發佈了31 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章