本文主要目錄:
最近研究了一下在線文檔瀏覽器,感覺這個東西很值得封裝成為一個平台級的組件,為什么這么說呢?因為在我們的傳統的應用系統或網站中,我們的文檔瀏覽功能對客戶端有很大的限制,例如客戶要想在他客戶端上瀏覽word格式文檔就必須安裝Office套件,瀏覽pdf時必須裝pdf閱讀器等,這樣用戶的體驗可想而知,為了提高用戶的體驗,增強各個應用產品的質量,做成一個平台級組件是非常有必要的。
文檔在線瀏覽器的主要功能包括:文件上傳、文件格式轉換、文件瀏覽等功能。
1.1、目標
盡量給客戶提供一個免插件瀏覽的環境,這樣COM、silverlight等不流行的插件基本被排除,flash成為首選,目前flash已基本上綁定在瀏覽器上,它的通用性非常強,用它沒錯。
文檔瀏覽低延遲,對於大附件可以采用異步的方式,比如切片的形式,把大附件切成一頁一頁,用戶選擇第幾頁就直接顯示第幾個切片,這樣實時性比較有保障。
文件上傳格式多樣性,支持上傳gif、png、jpg、pdf、txt、doc(x)、ppt(x)、xls(x)等,文件輸出為swf格式。
1.2、需求矩陣
在了解了文檔瀏覽器的基本功能和我們的應用目標之后,我們怎么去具體進行需求的分析呢,這里用需求矩陣來把需求整理出來,需求=功能+質量+約束,這個公式確實很清晰,我現在基本上都用它做需求分析,見下圖,我們從組織、用戶、開發3個層面去充分分析了所有需求,這樣我們接下來就可以做設計、技術選型、開發等工作了。
1.3、技術選型
文件上傳組件:jquery.uploadify;
Office轉換pdf:Microsoft.Office.Interop.Excel、Microsoft.Office.Interop.Word等;
pdf\圖片轉換swf:swftools;
文檔瀏覽組件:FlexPapper;
運行前配置:
1. 安裝Swftools.exe(百度搜索下載,0.9版本)
2. 安裝Office2010
3. 開啟print Spooler服務(一般系統默認開啟)
4. 操作系統:windows XP及以上版本。
運行配置:
1.配置檢測基本信息,如圖所示:
測試結果都為“Yes”,點擊“On to step2”
2.配置文檔瀏覽器基本信息如下圖:
上傳文件保存路徑為用戶上傳文檔所保存的地址。
SWF生成路徑是源文件轉換成SWF文件所存放的路徑。
這里根據對需求的充分分析,文檔格式的轉換既是實現的難點也是程序的核心,轉換的設計必須非常的優雅,通用和易維護性是重中之重,這里采用工廠模式方式實現,這樣如果有新的文檔格式需要轉換時,只需要繼承文檔轉換抽象基類即可,抽象基類中的配置信息、默認轉換方法可以直接復用,類圖詳見下圖:
通過本次封裝我們給各個開發項目提供了統一的文檔在線瀏覽器組件,項目中直接調用接口即可實現,運行效果參見下圖,由於FlexPapper是開源的,如果我們如果對組件的外觀不滿意,可以直接修改FlexPapper的源代碼即可實現,所以對需求的變化可以快速反應,精准執行!
支持上傳gif、png、jpg、pdf、txt、doc(x)、ppt(x)、xls(x)