1. 程式人生 > >FlexPaper 2.2.1介紹與提取嵌入的文件

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&amp;Scale=0.95&amp;ZoomTransition=easeOut&amp;ZoomTime=0.5&amp;ZoomInterval=0.2&amp;FitPageOnLoad=true&amp;FitWidthOnLoad=true&amp;MinZoomSize=0.2&amp;MaxZoomSize=5&amp;InitViewMode=Portrait&amp;ViewModeToolsVisible=true&amp;ZoomToolsVisible=true&amp;NavToolsVisible=true&amp;CursorToolsVisible=true&amp;SearchToolsVisible=true&amp;localeChain=zh_CN&amp;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也不是什麼難事。如下圖是顯示當前路徑下的文件:

flexpaper1

當我們開啟這個檔案在IE9中是這樣的:

flexpaper2

看服務端文件的目錄下檔案Performance Driven IT Management.pdf, 有被自動轉換了許多的Performance Driven IT Management.pdf1.swf…的檔案。這樣是為了加快載入速度。這樣,借用Flexpaper與swftools我們很容易構建WEB線上PDF文件瀏覽系統。

轉自:http://www.cnblogs.com/wintersun/p/3515483.html