文章複製於:http://www.cnblogs.com/flashlm/archive/2010/11/22/document-preview-online.htmlhtml
相關技術:openOffice JodConverter Swftools FlexPaper算法
近兩年出現了許多以「經驗交易」爲核心的文檔平臺,如豆丁網、百度文庫等網站。這些網站將文檔(知識)存放在網站上,供用戶瀏 覽、討論、下載,配以良好的積分體系和金錢激勵(運營),完美的協調好知識分享與知識傳播之間的微妙關係。對社會也是很是好的資源重用,是很是棒的一種運營模式。apache
從技術層面 講,這類網站的創新主要有文檔預覽、知識商城和SNS三個塊。安全
文檔預覽即文檔以flash(flash主要爲了防止用戶另存文檔等引發版權問題)的形式在網頁上展現,因此要解決兩個問題:以什麼格式展現flash、文檔如何轉化爲符合格式的flash。工具
展現flash有兩種方式,一種是直接生成好一個完整的flash展現出來,一種是用一個播放器來播放另一個文檔flash。第一種方式能夠用 SWFTools的工具直接將pdf轉化成一個總體的flash展現,但這種方式的flash較大,且不容易控制,故用得較少。第二種方式是重點,首先需 要了解的是一個開源的flexpaper播放器,它能夠播放一幀一頁的flash;在flexpaper的基礎上,若是遇到大文檔則會出現速度和性能的問題,這個時候須要像百度文庫、豆丁同樣修改flexpaper,讓它支持一次僅讀取指定頁數的flash;若是文檔安全級別較高,不容許下載查看,則須要給flexpaper加上加密解密算法;若是須要登陸用戶才能查看,則要讓flexpaper有登陸UI。性能
轉化文檔爲flash的思路有一條,但有多種實現方式。通常文檔須要先轉化爲pdf,再從pdf轉化爲flash。轉化爲pdf的方法有不少,例如使用虛擬打印機、使用MicrosoftOffice的API、使用OpenOffice轉化等,不過轉化的過程當中,可能因爲文檔有誤、損壞、加密等緣由形成轉化失敗。從pdf轉化爲flash就簡單了許多,直接使用SWFTools的pdf2swf便可實現多種方式的轉化。 flex
下圖是文檔轉化到swf的一個流程,其中type是文檔的一個狀態標識(0表示未處理過的文檔,1表示已生成pdf,2表示已生成flash,-1表示不受支持的文檔格式,-2表示轉化爲pdf失敗,-3表示轉化爲flash失敗)網站
以上方案免不了須要在部署時安裝相關軟件,爲系統部署帶來必定麻煩,須要更進一步的處理方案。加密
在沒有版權考慮需求下能夠採用apache tika等技術將文檔內容提取出來,網頁經過相似modal方式展現等...
spa