zoukankan      html  css  js  c++  java
  • 类似百度文库pdf2swf+flexpaper解决pdf在线阅读的效果

    1:工具准备
    swftools.exe 下载
    http://www.swftools.org/download.html 
    安装至D盘
    SWFTools提供了一系列将各种文件转成swf的工具:
    font2swf.exe 
    gif2swf.exe 
    jpeg2swf.exe 
    pdf2swf.exe 
    png2swf.exe 
    wav2swf.exe 
    这里我们只使用pdf2swf.exe

    flexpaper下载
    http://code.google.com/p/flexpaper/ 
    这里我们使用已经编译好的FlexPaper的flash版本

    2:示例语言,这里我使用的两种开发环境做示例
       php示例
       由pdf生成swf文件

    1. <?php  
    2. /* 
    3.  * Created on 2010-11-17 
    4.  * 
    5.  * To change the template for this generated file go to 
    6.  * Window - Preferences - PHPeclipse - PHP - Code Templates 
    7.  */  
    8.  //获取文件所在目录  
    9.  $dir=dirname(__FILE__) ;  
    10.  //删除测试文件  
    11.  @unlink( $dir."\test.swf" );  
    12.  //使用pdf2swf转换命令  
    13.  $command= "D:/SWFTools/pdf2swf.exe  -t "".$dir."\test.pdf" -o  "".$dir."\test.swf" -s flashversion=9 ";  
    14.  //创建shell对象  
    15.  $WshShell   = new COM("WScript.Shell");  
    16.  //执行cmd命令  
    17.  $oExec      = $WshShell->Run("cmd /C ". $command, 0, true);  
    18. ?>  

     java示例

    1. <%  
    2. /* 
    3.  * Created on 2010-11-17 
    4.  */  
    5.  //获取文件所在目录  
    6.   String path=request.getRealPath("/");  
    7.  //使用pdf2swf转换命令  
    8.  String command= "D:/SWFTools/pdf2swf.exe  -t ""+path+"\test.pdf" -o  ""+path+"\test.swf" -s flashversion=9 ";  
    9.  //执行cmd命令  
    10.  Runtime.getRuntime().exec("cmd /c "+command);  
    11. %>  


    以上是php,java将pdf转换成swf方式,那显示呢,这样我们会使用到flexpaper,以下是flexpaper的使用
       使用flexpaper展现swf

    [javascript] view plaincopyprint?
     
    1. <script type="text/javascript" src="js/swfobject/swfobject.js"></script>  
    2.  <script type="text/javascript">  
    3.          var swfVersionStr = "10.0.0";  
    4.          var xiSwfUrlStr = "playerProductInstall.swf";  
    5.          var flashvars = {  
    6.                SwfFile : escape("test.swf"),  
    7.    Scale : 0.6,  
    8.    ZoomTransition : "easeOut",  
    9.    ZoomTime : 0.5,  
    10.      ZoomInterval : 0.1,  
    11.      FitPageOnLoad : false,  
    12.      FitWidthOnLoad : true,  
    13.      PrintEnabled : true,  
    14.      FullScreenAsMaxWindow : false,  
    15.      ProgressiveLoading : true,  
    16.      PrintToolsVisible : true,  
    17.      ViewModeToolsVisible : true,  
    18.      ZoomToolsVisible : true,  
    19.      FullScreenVisible : true,  
    20.      NavToolsVisible : true,  
    21.      CursorToolsVisible : true,  
    22.    SearchToolsVisible : true,  
    23.      localeChain: "zh_CN"  
    24.    };  
    25.   
    26.  var params = {  
    27.   
    28.     }  
    29.          params.quality = "high";  
    30.          params.bgcolor = "#ffffff";  
    31.          params.allowscriptaccess = "sameDomain";  
    32.          params.allowfullscreen = "true";  
    33.          var attributes = {};  
    34.          attributes.id = "FlexPaperViewer";  
    35.          attributes.name = "FlexPaperViewer";  
    36.          swfobject.embedSWF(  
    37.              "FlexPaperViewer.swf", "flashContent",  
    38.              "650", "500",  
    39.              swfVersionStr, xiSwfUrlStr,  
    40.              flashvars, params, attributes);  
    41. swfobject.createCSS("#flashContent", "display:block;text-align:left;");  
    42.      </script>  
    43.   
    44.  <body>  
    45.   <div style="position:absolute;left:10px;top:10px;">  
    46.       <div id="flashContent">  
    47.       </div>  
    48.      </div>  
    49. </body>  


    通过上述方式我们可以将pdf转换成相应的swf文件,并通过flexpaper显示,防止用户下载,或copy。

    pdf2swf的详细参数说明,上网百度或者Google都能查到,但是注意的最好指定flashversion 为9,防止出现一些意外的错误。
    pdf2swf 中并不是所有的pdf都能转换,加密的pdf pdf2swf转换不了


    flexpaper 的参数详细说明请参考 http://code.google.com/p/flexpaper/wiki/Parameters

    flexpaper 常用的API  http://code.google.com/p/flexpaper/wiki/API

    如果出现乱码问题可能是字符集,网上有很多的相关解决方法可以查询【我没有碰到字符集堵的问题】。

    还有pdf中含有图片可能转换成swf后图片不大清晰。

    word,wps,txt等文档也可以采用该方式转换,但工具不一定为swftools

    上传的flexpaper附件中已经包含flexpaper中相关文件不用重新下载,只要下载swftools,并安装。
    flexpaper附件中包含了pdf2swf.jsp与pdf2swf.php两个文件及flexpaper相关的组件可以在java或php环境中运行。

  • 相关阅读:
    bzoj1027 状压dp
    CodeForces755F 贪心 + 多重背包二进制优化
    CodeForces632E 神奇的多重背包
    POJ3662 SPFA//二分 + 双端队列最短路
    bzoj1233 单调队列优化dp
    POJ3417 LCA+树dp
    Network
    树网的核/[SDOI2011]消防
    [APIO2010]巡逻
    核心城市
  • 原文地址:https://www.cnblogs.com/rrsina/p/4026735.html
Copyright © 2011-2022 走看看