源起看到某個公司內網的公文使用FlexPaper組件來顯示文檔,在這兒是GoogleCode Project的主頁, 還有現在的官方主頁。目前FlexPaper是個開源項目,GPLv3協議下免費使用,也有商業許可版本與無限制版。下面我們先介紹如何從預覽的SWF中保存成PDF文檔。
查看網頁html,找到如下,看到這里使用是FlexPaperViewer 1.5.1:
<object width="100%" height="100%" id="_571282476" name=
"_571282476" data=
"/st/static/common/js/flexpaper/FlexPaperViewer1.5.1.swf" type=
"application/x-shockwave-flash"><param name="wmode" value=
"transparent">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="quality" value="high">
<param name="flashvars" value=
"SwfFile=%2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8126&Scale=0.95&ZoomTransition=easeOut&ZoomTime=0.5&ZoomInterval=0.2&FitPageOnLoad=true&FitWidthOnLoad=true&MinZoomSize=0.2&MaxZoomSize=5&InitViewMode=Portrait&ViewModeToolsVisible=true&ZoomToolsVisible=true&NavToolsVisible=true&CursorToolsVisible=true&SearchToolsVisible=true&localeChain=zh_CN&key=$72815cdaaec3681f9d0"></object>
提取出的參數是這樣的:
SwfFile=%2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8127
&Scale=0.95&ZoomTransition=easeOut
&ZoomTime=0.5&ZoomInterval=0.2&FitPageOnLoad=true
&FitWidthOnLoad=true
&MinZoomSize=0.2&MaxZoomSize=5
&InitViewMode=Portrait
&ViewModeToolsVisible=true
&ZoomToolsVisible=true&NavToolsVisible=true
&CursorToolsVisible=true&SearchToolsVisible=true&localeChain=zh_CN
FlexPaper部分參數說明
SwfFile(String):需要使用FlexPaper打開的文檔
Scale(Number):初始化縮放比例,參數值應該是大於零的整數(1=100%)
ZoomTransition(String):FlexPaper中縮放樣式,它使用和Tweener一樣的樣式,默認參數值為easeOut,其他可選值包括:easenone,easeout,linear,easeoutquad
ZoomTime(Number):從一個縮放比例變為另外一個縮放比例需要花費的時間,該參數值應該為0或更大
ZoomInterval(Number):縮放比例之間間隔,默認值為0.1,該值應該為正數
FitPageOnLoad(Boolean):初始化時自適應頁面,與使用工具欄上的適應頁面按鈕同樣的效果
FitWidthOnLoad(Boolean):初始化時自適應頁面寬度,與工具欄上的適應寬度按鈕同樣的效果
看上面的參數,我們得知 %2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8127 這個字符串是文件源,然后我們可以使用百度應用URL解碼得到這樣的結果/odm/document/document!getSWFStream.action?documentId=8127, 然后我們就可以直接在瀏覽器訪問拼接以后的URL
http://odm.xxxxx.com/odm/document/document!getSWFStream.action?documentId=8127
這時我們可以使用打印文件方式來保存為PDF文件, 借用doPdf,Pdf factory組件也可以輕易保存PDF。到這兒我們是逆向的方式來保存文檔。
FlexPaper目前最新版本是2.2.1,另外還有一個開源項目swftools可以轉換pdf文件到swf文件。下載服務端DEMO,可以看到支持asp.net, java, php平台。 以下介紹Asp.net下,有幾個簡單的頁面來配置,之前把...\FlexPaper_2.2.1\aspnet設為Application,這些webform的文件帶有cs源文件,可以修改重新編譯,或是改寫為Asp.net MVC也不是什么難事。如下圖是顯示當前路徑下的文檔:
當我們打開這個文件在IE9中是這樣的:
看服務端文檔的目錄下文件Performance Driven IT Management.pdf, 有被自動轉換了許多的Performance Driven IT Management.pdf1.swf…的文件。這樣是為了加快加載速度。這樣,借用Flexpaper與swftools我們很容易構建WEB在線PDF文檔瀏覽系統。
您可能感興趣的文章:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog。