论坛首页 编程语言技术论坛

解决FlexPaper分页分段加载问题

浏览 22989 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-06  

FlexPaper是一个开源的PDF文档在线查看控件。用户查看PDF文档不需要安装Acrobat Reader,但需要利用像SwfTools这样的工具预先将PDF文档转成SWF格式的文件。FlexPaper能够对需要查看的文档进行分页、搜索、打印、缩放、全屏查看等

 

但对于一次性加载整个大型文档会导致加载时间过长和内存过渡消耗。在新的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


大家可以看到上面的命令行比原来只多了一个%符号,这个符号表示在PDF2SWF转换文档时,将为每一个页创建一个swf文件。如:"Paper1.swf", "Paper2.swf"。然后在FlexPaper控件配置加载SwfFile的地方,采用:{filename[*,padding],total pages}这种语法表明。

以下给出一个具体的配置示例:

        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" 
        }});

 

在这个例子中,我们指示FlexPaper按分页的方法来加载一个共有28页的文档,不需要用0填充文件名。假如你的文件是按"Paper01.swf", "Paper02.swf", .. 这种形式拆分时,要将padding设置成1,意思是用一个零来填充文件名。

但是这种解决方法有点不足的地方就是拆分后的一个个swf文件大小加起来比较原来单个文档的大小多了很多。

 

   发表时间:2011-07-19  
兄弟, 我想研究一下FlexPaperViewer.swf的源码,googlecode上好像没有提供,你知道怎么反编译吗
0 请登录后投票
   发表时间:2011-07-20  
modiliany 写道
兄弟, 我想研究一下FlexPaperViewer.swf的源码,googlecode上好像没有提供,你知道怎么反编译吗


有提供源码。你得用SVN下载。
0 请登录后投票
   发表时间:2011-07-20  
哦, 偶没有找到,能帮忙帖个链接吗?
另外,这个“FlexPaperViewer.swf的源码”用什么工具能打开?
Flex Builder 3是否能够打开?
0 请登录后投票
   发表时间:2011-07-21  
modiliany 写道
哦, 偶没有找到,能帮忙帖个链接吗?
另外,这个“FlexPaperViewer.swf的源码”用什么工具能打开?
Flex Builder 3是否能够打开?


 可以先用Flex Builder 3创建一个项目,然后再把源码导进去。那个FlexPaper的源码。我放在附件中,你就直接下载吧。

0 请登录后投票
   发表时间:2011-07-23  
兄弟,非常感谢啊
0 请登录后投票
   发表时间:2011-07-25  
兄弟,非常感谢啊
0 请登录后投票
   发表时间:2011-07-26  
Hello, 您说建个项目,不知道是不是选Action Script项目? 如下图:


  • 大小: 30.8 KB
0 请登录后投票
   发表时间:2011-07-26  
楼主, 你的项目import进去flex builder3之后报错啦,看了一下,里面有svn版本控制产生的冲突文件。
我把googlecode上的项目checkout出来, 发现FlexPaper_SDK4/这个目录就是FlexPaperViewer.swf的源码。
import之后发现“unkown Flex SDK4.0”看来得下载FLEX BUILDER 4了。
接下来就是要看懂这些源码了。 有没有API文档共享一下呀

0 请登录后投票
   发表时间:2011-07-26  
modiliany 写道
Hello, 您说建个项目,不知道是不是选Action Script项目? 如下图:




这个要看你的应用环境了。按实际选择。Flex我也是刚入门。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics