平台:Ubuntu14.04
用到的東西:
Apache_OpenOffice_4.1.1_Win_x86_install_zh-CN.exe
swftools-2013-04-09-1007.exe
jodconverter-core-3.0-beta-4-dist.zip
FlexPaper_2.2.4.zip
2012年的時候做過一版,但是當時用的版本都很陳舊,而且當時網上的資料極少。今年新做的一版都用了現在最新的版本,實作也跟以前大不相同,mark一下。
因為現在關于這個功能的實作網上資料太多了,下面列出我用的,大家直接點進去看就行,我就不粘貼人家的了。
第一步:利用OpenOffice和jodconverter包,将你的檔案轉換為pdf文;再利用swftools将pdf轉換為swf檔案。
參考: http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548331.html
第二步:用FlexPaper做前端展示
這步直接去FlexPaper的官網,将FlexPaper的包下載下傳下來就行。裡面就有現成的列子,但是列子裡swf檔案的内容是顯示不出來的,因為裡面有一段js判斷swf的路徑是否是URL路徑,去了就行了。
就是下面這段:
<script type="text/javascript">
var url = window.location.href.toString();
if(location.length==0){
url = document.URL.toString();
}
if(url.indexOf("file:")>=0){
jQuery('#documentViewer').html("<div style='position:relative;background-color:#ffffff;width:420px;font-family:Verdana;font-size:10pt;left:22%;top:20%;padding: 10px 10px 10px 10px;border-style:solid;border-width:5px;'><img src='http://flexpaper.devaldi.com/resources/warning_icon.gif'> <b>You are trying to use FlexPaper from a local directory.</b><br/><br/> FlexPaper needs to be copied to a web server before the viewer can display its document properlty.<br/><br/>Please copy the FlexPaper files to a web server and access the viewer through a http:// url.</div>");
}
</script>
ps:我遇到的功能需要在一個頁面顯示多個附件,那樣的話隻能通過Ajax動态請求swf檔案的URL了
pps:注意如果是Linux環境的話,在執行Runtime.getRuntime().exec(cmd);指令時,cmd的内容裡千萬不要包括雙引号,路徑不能有空格,否則無法建立程序!我吃了大虧了。。。
ppps:對于利用jodconvert轉換純文字為pdf時出現亂碼的情況,我的具體情況是這樣的:在Linux的可視化界面下打開OpenOffice直接轉換編碼為utf-8的txt不會出現亂碼,但是如果通過程式利用jodconvert轉換的時候就會有亂碼。看了網上很多資料都說是缺少字型要導入黑體和仿宋兩個字型,但是我試了不管用。是以我最後把windows下的所有字型都導入到了Linux裡,最後問題都解決了。但前提是你必須把文本文檔的編碼轉換為utf-8的。
導入字型步驟如下:
windows字型目錄c:\windows\fonts
linux字型目錄/usr/share/fonts
1、在Linux目錄裡建立一個win檔案夾
mkdir/usr/share/fonts/win
2、将windows字型檔案複制到/usr/share/fonts/win目錄下。
然後依次執行
mkfontscale
mkfontdir
fc-cache
mkfont指令是生成win目錄下所包含的字型的索引資訊。然後運作fc-cache指令更新字型緩存
reboot 重新開機系統。