最近花了幾個星期的時間,折騰了一個在線文檔網站,類似百度文庫的功能,主要涵蓋教育類文檔。
測試的話是在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:
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這個玩意兒就行,可以直接運行命令測試:
- 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命令實現轉換:
當添加下載地址完成后,捕捉到該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代碼如下:
下面在某一目錄(根據個人習慣)下創建doc2swf.php文件,代碼如下:
這樣就實現了文檔上傳自動轉化為可通過flexpaper在線顯示的swf文件格式了
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/1355/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料