文檔在線預覽:總體思路
近兩年出現了許多以“經驗交易”為核心的文檔平臺,如豆丁網、百度文庫、星期八等網站。這些網站將文檔(知識)存放在網站(平臺)上,供用戶瀏覽、討論、下載,配以良好的積分體系和金錢激勵(運營),完美的協調好知識分享與知識傳播之間的微妙關系。這樣即有Web2.0的用戶互動,也有Web3.0的價值分配,對社會也是非常好的資源重用,是非常棒的一種運營模式。
從技術層面講,這類網站的創新主要有文檔預覽、知識商城和SNS三個塊。今年初公司也決定在公司內部引入這種模式,以實現公司內部文檔特別是售前方案的分享,很榮幸,我被安排為此項目的技術經理,也專門研究了文檔在線預覽的技術。如今項目已經上線將近百天,也是時候整理一下思路,這篇博客主要就是分析一些文檔在線預覽的技術細節,其實網上已經有很多類似的文章,但大多沒有說得很清楚,也比較零亂,所以我想整理一個完整的文章來。文章內容將會涉及:總體思路、預覽實現細節、縮略圖實現、百度閱讀器使用等。
文檔預覽即文檔以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即可實現多種方式的轉化。
下圖是文檔轉化到swf的一個流程,其中type是文檔的一個狀態標識(0表示未處理過的文檔,1表示已生成pdf,2表示已生成flash,-1表示不受支持的文檔格式,-2表示轉化為pdf失敗,-3表示轉化為flash失敗)

全站熱搜