FlexPaper 2.2.1介紹與提取嵌入的文件
源起看到某個公司內網的公文使用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
這時我們可以使用列印檔案方式來儲存為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文件瀏覽系統。
轉自:http://www.cnblogs.com/wintersun/p/3515483.html