pdf2swf+flexpapers实现类似百度文库pdf在线阅读

时间:2022-05-10 05:45:50

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

 

 java示例
 

复制代码代码如下:

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

 

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

 

复制代码代码如下:

<script type="text/javascript" src="js/swfobject/swfobject.js"></script>  
 <script type="text/javascript">  
         var swfVersionStr = "10.0.0";  
         var xiSwfUrlStr = "playerProductInstall.swf";  
         var flashvars = {  
               SwfFile : escape("test.swf"),  
   Scale : 0.6,  
   ZoomTransition : "easeOut",  
   ZoomTime : 0.5,  
     ZoomInterval : 0.1,  
     FitPageOnLoad : false,  
     FitWidthOnLoad : true,  
     PrintEnabled : true,  
     FullScreenAsMaxWindow : false,  
     ProgressiveLoading : true,  
     PrintToolsVisible : true,  
     ViewModeToolsVisible : true,  
     ZoomToolsVisible : true,  
     FullScreenVisible : true,  
     NavToolsVisible : true,  
     CursorToolsVisible : true,  
   SearchToolsVisible : true,  
     localeChain: "zh_CN"  
   };  
  
 var params = {  
  
    }  
         params.quality = "high";  
         params.bgcolor = "#ffffff";  
         params.allowscriptaccess = "sameDomain";  
         params.allowfullscreen = "true";  
         var attributes = {};  
         attributes.id = "FlexPaperViewer";  
         attributes.name = "FlexPaperViewer";  
         swfobject.embedSWF(  
             "FlexPaperViewer.swf", "flashContent",  
             "650", "500",  
             swfVersionStr, xiSwfUrlStr,  
             flashvars, params, attributes);  
swfobject.createCSS("#flashContent", "display:block;text-align:left;");  
     </script>  
  
 <body>  
  <div style="position:absolute;left:10px;top:10px;">  
      <div id="flashContent">  
      </div>  
     </div>  
</body>  

 

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

 pdf2swf+flexpapers实现类似百度文库pdf在线阅读

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环境中运行。