編程學習網 > 服務器 > CentOS > 帝國CMS在CentOS環境下實現在線文檔網站(類似百度文庫)
2014
11-07

帝國CMS在CentOS環境下實現在線文檔網站(類似百度文庫)

最近花了幾個星期的時間,折騰了一個在線文檔網站,類似百度文庫的功能,主要涵蓋教育類文檔。

測試的話是在windows環境下,不細述,主要概述一下centos環境下的部署:

系統環境:CentOs6.2

web環境:apache2,mysql5,php5

CMS系統:帝國CMS(基于文檔下載系統開發)

用到的工具:Openoffice 3.4.1 , pdf2swf tools, jodconverter , flexpaper

網上百度/谷歌來的資料,基本上都是用java來寫的,如果在帝國CMS(PHP開發)中調用Servlet,比較繁瑣,且效率較低,所以考慮用PHP代碼來實現。大致思路參考了網上的資料:

實現步驟: 1. Office文件(doc/ppt/xls)上傳   2. Office轉成PDF   3. PDF轉成SWF  4. 用Flexpaper顯示SWF文件

基于對CentOS環境引入openoffice sdk + pdf2swf tool,分兩個步驟,先利用openoffice sdk把文檔統一轉成pdf,然后利用pdf2swf tools把pdf轉成swf

實現過程

要實現DOC轉成PDF,在LINUX下面有OpenOffice可以實現。

那么首先需要的是安裝Openoffice:

1.網上下載OpenOffice:選擇Linux  x86-64 RPM簡體中文版下載

2.解壓:tar zvxf Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz

3.進入目錄:cd zh-CN/RPMS

4.安裝:rpm -ivh *.rpm --nodeps –force  安裝后的默認目錄是在:/opt/目錄下面

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

6.在CentOs下面會缺少黑體和宋體的,直接找到Windows下面的字體目錄把黑體和宋體復制進去到如下目錄:

/opt/openoffice.org/basis3.3/share/fonts/truetype/      需要重啟后才會生效

接下來安裝OpenOffice SDK3.3:

1.下載:選擇Linux x86-64 RPM SDK下載

2.解壓:tar zxvf OOo-SDK_3.4.1_Linux_x86-64_install-rpm_en-US.tar.gz

3.進入目錄:cd en-US/RPMS/

4.安裝:rpm -vih *.rpm

然后安裝jodconverter.2.2.2,安裝了這個之后就已經可以實現DOC轉PDF了。

這個安裝很簡單,直接上網站下一個這個壓縮文件回來。

解壓,復制到一個目錄里面去,就能直接用了,調用它里面的/lib/jodconverter-cli-2.2.2.jar這個玩意兒就行,可以直接運行命令測試:

  1. java -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar test.doc test.pdf

下面安裝SWFTools:

中文支持安裝:

mkdir –p /usr/local/share/xpdf
cd /usr/local/share/xpdf/
下載中文支持及字體庫 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
mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/
cd /usr/share/xpdf/xpdf-chinese-simplified
編輯,加入新增的字體:vim add-to-xpdfrc  內容如下:
cidToUnicodeAdobe-GB1/usr/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMapISO-2022-CN/usr/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap
unicodeMapEUC-CN/usr/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
unicodeMapGBK/usr/share/xpdf/chinese-simplified/GBK.unicodeMap
cMapDirAdobe-GB1/usr/share/xpdf/chinese-simplified/CMap toUnicodeDir/usr/share/xpdf/chinese-simplified/CMap
displayCIDFontTT Adobe-GB1 /usr/share/xpdf/chinese-simplified/CMap/gkai00mp.ttf

保存后退出

SwfTool安裝:

cd /usr/local/wenku
wget http://www.swftools.org/swftools-0.9.1.tar.gz
tar zxvf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure
make
make install

測試一下是否可用:pdf2swf -o /path/test.swf -T -z -t -f /path/test.pdf -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9

如果測試成功,那么就已經OK一大半了,接下來就是顯示的問題了。

最后用FlexPaper實現在線預覽

這個是網上下載吧,模仿demo改下JS就行了,里面是用的JS讀取SWF的路徑,這個簡單吧,不講了。

最后在帝國CMS添加下載文件地址時,用Ajax異步提交調用PHP來調用LINUX命令實現轉換:

70495B64E83203BCC3C05A26065B60CA_B500_900_500_26

當添加下載地址完成后,捕捉到該input失去焦點事件調用ajax實現文檔轉化功能:

1.在AddNews.php中找到<div id="TabPane1">,在下面添加一段js代碼:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

2.往下在

<?php
    include($modfile);
?>

之下添加js代碼如下:

BB3104FB4298A01FD07F425FA22F47FE_B500_900_485_408

下面在某一目錄(根據個人習慣)下創建doc2swf.php文件,代碼如下:

1EEAF726043F6404A20C98F9DC3F7ED3_B500_900_500_210

這樣就實現了文檔上傳自動轉化為可通過flexpaper在線顯示的swf文件格式了

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取