接公司需求,要實作類別似百度文庫的這麼一個東西
關鍵的技術就在於文檔轉換為swf,及展示
網上搜了好多參考,總結出幾種可實現方案:
1.Print2flash商業軟體。功能非常強大,可制定性強,穩定。可直接把office、PDF等文檔直接轉換成帶瀏覽架構的swf檔案。唯一缺點是,收費,搜不到破解方法,有序號,但序號版本功能有限制,不適合通過代碼實現文檔轉換
2.FlashPaper。同上,可以直接把office、PDF等文檔直接轉換成帶瀏覽架構的swf檔案。只是無法制定皮膚、浮水印等東西,速度慢,不穩定。
3.最後決定使用的方案是:office文檔轉換為PDF,再通過pdf轉為swf,使用flex製作一個瀏覽架構swf檔案。
所需環境為:
1.adobe acrobat 9。轉換為pdf檔案
2.office2007。將office檔案轉為pdf時,除了acrobat,當然office功能不可少。
3.swftools。開源工具,可將pdf檔案轉為SWF檔案
4.vs2010開發環境,通過.net開發一個命令小工具,調用acrobat庫的功能,實現命令列方式轉換office,代碼其實也就十來行就實現了。
實現步驟:
1.安裝adobe acrobat 9、office2007、swftools等軟體
2.使用vs2010開發命令列工具,調用acrobat的PDFMakerAPI.dll來實現轉換。
3.PHP頁面上傳文檔,在後台執行轉換。在此遇到一個問題,所開發的工具如果在windows的cmd視窗中調用,可正確轉換,但通過php的exec調用命令來轉換,無法產生目標pdf。經分析,是PHP的許可權不足。修改apache服務啟動的使用者,使其擁有較高的許可權,轉換成功。
4.swftools轉換pdf為swf,注意要點,需要加-T 9 版本參數,否則產生的SWF格式將為AVM1Movie格式,在flex中通過swfloader無法控制
5.使用flex開發一個載入架構swf,該swf可自己制定外觀、浮水印等,關鍵技術是通過swfloader載入內容swf,然後gotoAndStop()每一幀,將每一幀的內容移到一個容器中,這個容器就是一個頁面。也就是每一幀,產生一頁,然後添加到一個VGroup中,再放到一個scroller中實現滾動。