欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-29 15:56:58
1:工具准备 swftools.exe 下载 安装至d盘 swftools提供了一系列将各种文件转成swf的工具: font2swf.exe gif2...

1:工具准备

swftools.exe 下载

安装至d盘
swftools提供了一系列将各种文件转成swf的工具:
font2swf.exe
gif2swf.exe
jpeg2swf.exe
pdf2swf.exe
png2swf.exe
wav2swf.exe
这里我们只使用pdf2swf.exe

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."" ); 
 //使用pdf2swf转换命令 
 $command= "d:/swftools/pdf2swf.exe  -t \"".$dir."" -o  \"".$dir."" -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+"" -o  \""+path+"" -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环境中运行。