解決FlexPaper分頁分段加載問題

碼頭工人 14年前發布 | 12K 次閱讀

<FONT face=宋體><A href="http://www.baiduhome.net/ajax/ajax20100330090431.htm" target=_blank>FlexPaper</A>是一個開源的PDF文檔在線查看控件。用戶查看PDF文檔不需要安裝Acrobat Reader,但需要利用像<A href="/misc/goto?guid=5033825199179659940" target=_blank>SwfTools</A>這樣的工具預先將PDF文檔轉成SWF格式的文件。FlexPaper能夠對需要查看的文檔進行分頁、搜索、打印、縮放、全屏查看等</FONT><SPAN style="FONT-FAMILY: 宋體" class=Apple-style-span></SPAN>

但對于一次性加載整個大型文檔會導致加載時間過長和內存過渡消耗。在新的FlexPaper版本中已經能夠解決這個問題。首先需要將你的文檔拆分成多份swf文件,然后在調用FlexPaper的時候設置好相關參數,這樣在瀏覽的時候就能夠分頁/分段加載。下面將介紹如何將文檔拆分成多份swf文件和怎么設置FlexPaper參數:

關于如何拆分文檔,在FlexPaper 1.4.5中已經提供了一個開箱即用的示例。只要在支持PHP的服務器上運行其提供的'split_document.php'文件能夠自動進行分頁。對于服務器上不支持PHP運行的,可以在調用PDF2SWF程序時,在原來調用的命令行基礎上稍微修改一下具體如下:

C:\SWFTools\pdf2swf.exe Paper.pdf -o Paper%.swf -f -T 9 -t -s storeallcharacters


大家可以看到上面的命令行比原來只多了一個<FONT color=#ff0000>%</FONT>符號,這個符號表示在PDF2SWF轉換文檔時,將為每一個頁創建一個swf文件。如:"Paper1.swf", "Paper2.swf"。然后在FlexPaper控件配置加載SwfFile的地方,采用:{filename[*,padding],total pages}這種語法表明。

以下給出一個具體的配置示例:<PRE class=prettyprint><SPAN class=pln><PRE style="BACKGROUND-COLOR: #c5c5c5; FONT-WEIGHT: bold" class=java name="code"> var fp = new FlexPaperViewer(
'FlexPaperViewer', 'viewerPlaceHolder', { config : { SwfFile : "{Paper[*,0].swf,28}", Scale : 0.6, ZoomTime : 0.5, ZoomInterval : 0.1, FitPageOnLoad : false, FitWidthOnLoad : false, PrintEnabled : false, MinZoomSize : 0.2, MaxZoomSize : 5, localeChain : "en_US" }}); </PRE>
</SPAN></PRE>在這個例子中,我們指示FlexPaper按分頁的方法來加載一個共有28頁的文檔,不需要用0填充文件名。假如你的文件是按</B>"Paper01.swf", "Paper02.swf", .. 這種形式拆分時,要將padding設置成1,意思是用一個零來填充文件名。

FlexPaper項目地址:http://flexpaper.devaldi.com/
下載地址:http://flexpaper.devaldi.com/download/
文檔地址:http://flexpaper.devaldi.com/docs.htm
歡迎轉載,但轉載請注明出處。尊重他人的勞動成果。

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!