一般類似oa或者crm等管理系統可能都會遇到需要再線查看word文檔的功能,類似百度文庫。
記得去年小組中的一個成員負責的項目就需要這個的功能,后面說是實現比較困難,就將就着用chm格式替代了。今天看到網上一遍文章《LINUX下面PHP文件轉換》,介紹怎么樣在linux下使用Openoffice 3 , Pdf2Swf tool , Jodconverter , FlexPaper,實現文檔在線查看。
自己再ubuntu下進行的嘗試安裝,步驟如下:
因為ubuntu版本為10.0.4,openoffice已經默認安裝。如果沒有安裝openoffice的話自行谷歌安裝。
第一步:安裝jodconverter,安裝之后可以實現doc文檔轉成pdf。
文件下載地址為http://www.artofsolving.com/opensource/jodconverter
下載了之后直接解壓,解壓到/opt目錄下/opt/jodconverter-2.2.2/,使用到的文件是安裝包內的lib/jodconverter-cli-2.2.2.jar。
測試是否可以使用
- java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/php/1.doc /home/php/1.pdf
這里提示缺少java軟件包,並會提示幾個安裝包供。選擇我安裝openjdk-6-jre-headless,命令如下:
- sudo apt_get openjdk-6-jre-headless
安裝之后再運行上面doc轉pdf的命名,會提示openoffice進程未啟動,
因為JODConverter是通過OpenOffice來做轉換的 ,所以使用前需要先安裝OpenOffice, 並且將OpenOffice的Service啟動, 才可以使用. 啟動命令
- /usr/lib/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
到此運行上面的doc轉pdf的命令已經可以成功。
第二步:安裝swftools,安裝之后可以實現pdf文件轉成swf
- wget http://www.swftools.org/swftools-0.9.1.tar.gz
- tar xzf swftools-0.9.1.tar.gz
- cd swftools-0.9.1
- ./configure
- make
- make install
測試是否可以使用
- pdf2swf -o /home/php/1.swf -T -z -t -f /home/php/1.pdf -s flashversion=9
第三步:用FlexPaper實現在線預覽,里面有詳細的demo。
第四步:使用php測試文檔轉換命令:
文檔轉pdf
- <?php
- $doc = './docs/test.txt';
- $formatName = './pdf/test.pdf';
- $command = 'java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar '.$doc.' '.$formatName;
- exec($command);
- echo 'ok';
pdf轉swf
- <?php
- $pdf = './pdf/test.pdf';
- $swf = './swf/test.swf';
- $command = '/usr/local/wenku/swftools-0.9.1/src/pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';
- exec($command);
- echo 'ok';
php腳本去運行上面的命令可能存在權限的問題無法執行
其中我測試使用的php腳本調用pdf2swf進行轉換文件,生成不了。這樣只需配置apache的用戶權限即可,確保配置的用戶有權限運行pdf2swf命令
默認安裝的php環境ubuntu下配置文件是/etc/apache2/apache2.conf修改這兩行,
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_USER}
配置完之后,重啟apache。
/etc/init.d/apache2 restart
到此linux下的安裝配置就結束了。
window下測試
下載window下使用的Pdf2Swf tool和FlexPaper,手動的將pdf文件轉swf后進行在線查看的功能。
步驟整理如下:
1.安裝Pdf2Swf tool之后,進行將pdf轉swf。cmd命令行:
pdf2swf.exe -t D:\wamp5.3\www\test\pdf\c.pdf -s flashversion=9 -o D:\wamp5.3\www\test\swf\c.swf
-t: 源文件路徑,即待轉換的pdf文件路徑。
-s: 設置參數,這里我們設置為 flashversion=9 ,即可以轉換為9 的版本啦。
-o: 輸出文件的路徑,這里我輸出到D:盤下
運行的結果如圖所示:
2.使用FlexPaper插件顯示瀏覽swf文件。這里下載使用的版本是1.5.8 Flash Version (release notes)。軟件包內就已經有html版本的demo,稍微改動下句可以實現了。
代碼如下:
- <script src="js/flexpaper_flash.js" type="text/javascript"></script>
- <a id="viewerPlaceHolder" style="width:680px;height:480px;display:block;"/></a>
- <script type="text/javascript">
- var fp = new FlexPaperViewer(
- 'FlexPaperViewer',
- 'viewerPlaceHolder', { config : {
- SwfFile : escape('c.swf'),
- Scale : 0.1,
- ZoomTransition : 'easeOut',
- ZoomTime : 0.5,
- ZoomInterval : 0.2,
- FitPageOnLoad : true,
- FitWidthOnLoad : false,
- FullScreenAsMaxWindow : false,
- ProgressiveLoading : false,
- MinZoomSize : 0.2,
- MaxZoomSize : 5,
- SearchMatchAll : false,
- InitViewMode : 'Portrait',
- PrintPaperAsBitmap : false,
- ViewModeToolsVisible : true,
- ZoomToolsVisible : true,
- NavToolsVisible : true,
- CursorToolsVisible : true,
- SearchToolsVisible : true,
- localeChain: 'en_US'
- }})
- </script>