当前位置:编程学习 > php >>

pdf2swf+flexpaper解决pdf在线阅读(php开发百度文库程序)

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文件

Php代码 复制代码 收藏代码
  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示例

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

Js代码 复制代码 收藏代码
  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环境中运行。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,