利用OpenOffice、flexpaper、swftools將DOC、JPG檔案轉PDF再轉成SWF線上預覽
公司需要將文件進行線上預覽,鑑於網上沒一個完整的踩坑流程而且大牛不願寫的情況,鄙人願手操一份方便日後相見(段友可能懂)!
完全貼程式碼這種浪費讀者時間的事情,恕小人難做到!
windows上的應用網上多多少少也能拼接,我就只記錄一下linux的。所需檔案和原始碼全部打包到了這裡。
當然各位去官網更好。
一、Linux安裝OpenOffice
解壓OpenOffice檔案:tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar
進入資料夾內的RPMS資料夾內,並執行rpm -ivh *.rpm一次性安裝相關rpm
cd desktop-integration
安裝桌面的RPM(注意區分)
- 命令程式碼
rpm -ivh openoffice4.1.3-redhat-menus-4.1.3-9783.noarch.rpm
啟動OpenOffice服務。
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
如果soffice命令不成功,就cd /opt/openoffice4/program/去這個目錄去執行吧。
用ps -ef | grep openoffice來判斷服務是否啟動成功
二、Linux安裝SwfTools
1、安裝命令如下:
wget http://www.swftools.org/swftools-0.9.2.tar.gz
tar vxzf swftools-
0.9
.
2
.tar.gz
cd swftools-
0.9
.
2
./configure --prefix=/usr/swftools
make
make install
修改配置檔案
vim /etc/profile(vi /etc/profile也可以)
export PATH=$PATH:/usr/swftools/bin/
source /etc/profile(這是我的個人習慣,讓其生效,免得後患)
2、安裝xpdf語言包
下載xpdf-chinese-simplified.tar.gz並在/user/share/xpdf下面解壓出來
tar -zxvf xpdf-chinese-simplified.tar.gz
解壓後的xpdf-chinese-simplified下面會有一個CMAP資料夾,把我給的壓縮包裡面的gkai00mp.ttf放進這個目錄,然後修改
vi 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
這時候把pdf轉成swf看看效果
pdf2swf -s languagedir=/usr/local/xpdf/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 "/opt/a.pdf" -o "/opt/a.swf"
把生成的a.swf下載本地看看是否正常
三
注意幾大坑!!!
1、檔案轉PDF的時候亂碼,需要在/opt/openoffice4/share/fonts/truetype加入支援中文字型的ttf檔案。這時候要重啟OpenOffice.
2、xpdf不把支援中文字型的東西加入進去會在pdf轉swf的時候亂碼。
3、路徑顯示問題。如果是單純的tomcat,需要在tomcat下面的conf/server.xml裡面的host內加入東西,比如你希望在/home/data下面顯示東西。而你想在jsp中顯示/swf.你就得寫
<Context crossContext="true" docBase="/home/data" path="/swf" reloadable="false"/>