由于項(xiàng)目要實(shí)現(xiàn)類似百度文庫(kù)的功能,又是我一個(gè)人做的項(xiàng)目,所以就想到找免費(fèi)的現(xiàn)成的來(lái)使用。在網(wǎng)上找到的都是一樣的。如下:
Flash Paper支持Office文檔(.doc,.xls,.ppt)直接轉(zhuǎn)換為PDF或SWF,速度很快,效果較好??上В現(xiàn)lash Paper V2.2后沒(méi)有再更新了。安裝Flash Paper后,可以直接使用命令調(diào)用FlashPrinter.exe,實(shí)現(xiàn)批量轉(zhuǎn)換。
例如:C:\FlashPaper2.2\FlashPrinter.exe C:\Flex技術(shù)簡(jiǎn)介.ppt -o C:\Flex技術(shù)簡(jiǎn)介.swf
下載個(gè)FlashPaper,安裝好之后,控制面板的打印機(jī)那里會(huì)出現(xiàn)一個(gè)虛擬的打印機(jī),這個(gè)就說(shuō)明安裝成功了,win7下我試過(guò)32位的和64位的都安裝不了。
在命令行試一下上面的命令,路徑根據(jù)自身調(diào)整。執(zhí)行后,成功就說(shuō)明可以用了.
接下來(lái)就是php使用了,php使用 exec,或者system等來(lái)執(zhí)行cmd命令,如:
exec(“C:\FlashPaper2.2\FlashPrinter.exe C:\Flex技術(shù)簡(jiǎn)介.ppt -o C:\Flex技術(shù)簡(jiǎn)介.swf”);
執(zhí)行這個(gè)之前要配置以下php.ini 把安全模式設(shè)為off(safe_mode = Off),或者開著也行,在safe_mode_exec_dir =設(shè)置允許允許exe的路徑,設(shè)為flashpaer的路徑。
測(cè)試一下,執(zhí)行成功!
這 些都是可以在網(wǎng)上查到的,由于我用的是office2007所以word后綴.docx,轉(zhuǎn)換的時(shí)候就失敗了,一直在網(wǎng)上也找不到原因,無(wú)意中,我把要轉(zhuǎn) 換的 a.docx 改名為 a.doc 轉(zhuǎn)換成功了,這樣我也想不明白,因?yàn)橹苯釉赾md 下,轉(zhuǎn)換.docx 是可以的。同理要轉(zhuǎn)2007的ppt,excel 都是把后綴去掉那個(gè)x就可以轉(zhuǎn)換了。
-------------------------------------------------- --------------------------------------------------- -------
最近,有個(gè)項(xiàng)目要用到類似DOCIN的文檔轉(zhuǎn)換和閱讀的功能,于是就開始找相關(guān)的資料,最后總結(jié)出2種解決辦法,以下就來(lái)探討下兩種方法的各自實(shí)現(xiàn)。
第一種:通過(guò)FLASH PAPER來(lái)轉(zhuǎn)換DOC文檔直接生成SWF,這個(gè)很簡(jiǎn)單,下載一個(gè)FLASH PAPER 安裝就可以調(diào)用,我們?cè)诔绦蚶锸怯肅MD調(diào)用的,調(diào)用的命令是:C:\Program Files\Macromedia\FlashPaper 2\FlashPrinter.exe xxx.ppt -o xxx.swf,不過(guò)經(jīng)我測(cè)試,這個(gè)東西有很大的缺陷,不能并發(fā)幾個(gè)一起用,也就是說(shuō)只能同時(shí)轉(zhuǎn)換一個(gè)文檔,我不知道有沒(méi)有其他方法能夠解決這個(gè)問(wèn)題,如果你有解決的辦法,也請(qǐng)告訴我,F(xiàn)LASH PAPER的轉(zhuǎn)換原理是這樣的:建立一個(gè)虛擬打印機(jī),打開文檔,虛擬打印,取得打印的內(nèi)容直接生成SWF,所以轉(zhuǎn)換一個(gè)文檔就需要一個(gè)虛擬打印機(jī)的運(yùn)行~~~中間會(huì)彈出打印和打開文檔的窗口。這個(gè)方案不符合我的要求,直接PASS。
第二種:利用開源的軟件OPENOFFICE把文檔轉(zhuǎn)換成PDF,在通過(guò)SWFTOOLS把PDF轉(zhuǎn)換成SWF,其中要用到的東西比較多,下面一一道來(lái)。這個(gè)方案可以在微軟的系統(tǒng)下運(yùn)行,也可以在*NUX下運(yùn)行,我是CENTOS5.5字符界面下跑的,下面是過(guò)程:
首先安裝裝CENTOS5.5系統(tǒng),安裝過(guò)程就不再羅嗦了,我是最簡(jiǎn)安裝的
裝好系統(tǒng)后,就是把需要的軟件包都下載下來(lái):我們用到的軟件包有
# wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/C DS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/ jdk-6u20-linux-i586.bin?BundledLineItemUUID=fdeJ_hC vMVcAAAEpabADyW5K&OrderID=JRuJ_hCvMlQAAAEpWrADyW5K& ProductID=guBIBe.oc_wAAAEnaDJHqPYe&FileName=/jdk-6u 20-linux-i586.bin
# wget http://download.services.openoffice.org/files/loca lized/zh-cn/3.2.0/OOo_3.2.0_LinuxIntel_install_zh-C N.tar.gz
# wget http://www.swftools.org/swftools-0.9.1.tar.gz
wget http://apache.etoak.com/tomcat/tomcat-6/v6.0.26/bi n/apache-tomcat-6.0.26.tar.gz
還有一個(gè)openoffice的插件,我們所有的應(yīng)用都基于它:jodconverter
下載地址是:http://sourceforge.net/projects/jodconverter/files /
好了,軟件包準(zhǔn)備好,下面就開工了⌒_⌒
先裝JDK & tomcat,安裝過(guò)程就不羅嗦了,不會(huì)的google下
接下來(lái),安裝openoffice,
# tar zxvf OOo_3.2.0_LinuxIntel_install_zh-CN.tar.gz
#cd OOO320_m12_native_packed-1_zh-CN.9483/RPMS
#rpm -ivh –force –nodeps *.rpm
就這樣www.58wl.com,OPENOFFICE就安裝好了,如果你的系統(tǒng)沒(méi)有中文字體,就把中文字體安裝上,否則轉(zhuǎn)出來(lái)的PDF會(huì)亂碼
裝好openoffice后,接著安裝swftools,swftools安裝也比較簡(jiǎn)單,
# tar zxvf swftools-0.9.1.tar.gz
#cd swftools-0.9.1
# ./configure –prefix=/usr/local/swftools/
# make && make install
到此,所有該安裝的軟件都已經(jīng)安裝好了,由于我現(xiàn)在是利用
下面開始把所需服務(wù)都啟動(dòng)起來(lái),
先把OPENOFFICE啟動(dòng)起來(lái),我們是當(dāng)作服務(wù)啟動(dòng)的,啟動(dòng)命令如下
#/opt/openoffice.org3/program/soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &
接著把TOMCAT 啟動(dòng),把jodconverter做為WEB APP轉(zhuǎn)換服務(wù)的,所以先把下災(zāi)下來(lái)的jodconverter-webapp-2.2.2.zip解壓,把jodconverter-webapp- 2.2.2.war放到TOMCAT根目錄,運(yùn)行TOMCAT后,會(huì)自動(dòng)生成APP文件夾,為了書寫簡(jiǎn)單,我們改名為converter,假設(shè)你的服務(wù)器 IP為:192.168.1.123www.linghan56.cn,TOMCAT端口為8080,瀏覽器輸入:
http://192.168.1.123:8080/converter/,看看轉(zhuǎn)換程序運(yùn)行正常不,啟動(dòng)正常的話,我們的工作就完成一大半了。 主要的工作已經(jīng)做完,現(xiàn)在剩下的就是怎么應(yīng)用了,我是利用PHP調(diào)用轉(zhuǎn)換的程序的,用戶通過(guò)PHP上傳文件,
判斷文件類型,如果是JPG,GIF,PNG,PDF等利用SWFTOOLS可以直接轉(zhuǎn)換的文件,就直接轉(zhuǎn)換,否則,通過(guò)http://192.168.1.123:8080/converter/把文件轉(zhuǎn)換為PDF,再利用SWFTOOLS把PDF轉(zhuǎn)為SWF,值得注意的是,PDF轉(zhuǎn)SWF時(shí)候,注意把版本轉(zhuǎn)化為9,如果轉(zhuǎn)為9以下的版本的話,AS3操作起來(lái)會(huì)很麻煩,SWFTOOLS轉(zhuǎn)換的命令如下:
#/usr/local/swftools/bin/pdf2swf -T 9 XXX.pdf XXX.swf
其中-T是版本信息,具體可以通過(guò)#/usr/local/swftools/bin/pdf2swf -help查詢
現(xiàn)在整個(gè)過(guò)程完成3/4了,剩下的就是用AS3寫一個(gè)東西出來(lái),操作PDF生成的SWF,生成的SWF文件格式是這樣的,每一頁(yè)的文檔會(huì)生成一個(gè)movieclip,具體的代碼我就不貼不出來(lái)了,這個(gè)相信也不難。
本來(lái)想放一個(gè)在線的DEMO的,不過(guò)我這個(gè)VPS配置太低,512M的內(nèi)存,還不能自己添加swap,跑了PHP+MYSQL,就跑不動(dòng)這個(gè)了,這個(gè)應(yīng)用要求的內(nèi)存和CPU還是蠻高的。
比較兩種方法,第一種轉(zhuǎn)換出來(lái)的東西應(yīng)該更好,而且支持的格式更多,理論上講,只要能打印的東西,都能轉(zhuǎn)換,只是不能并發(fā),所以意義不大,如果能利用這個(gè)原理,自己寫一個(gè)轉(zhuǎn)換服務(wù)器,解決并發(fā)問(wèn)題,那第一種應(yīng)該是最合適的。
第二種只能轉(zhuǎn)換openoffice支持的格式,對(duì)服務(wù)器的要求非常的高。不知道DOCIN和BAIDU文檔是怎么樣的解決方案