类似百度文库pdf2swf+flexpaper解决pdf在线阅读的效果

8/31/2015来源:PHP技巧人气:2005

类似百度文库pdf2swf+flexpaper解决pdf在线阅读的效果

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

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

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

[php]view plaincopyPRint?
  1. <?php
  2. /*
  3. *Createdon2010-11-17
  4. *
  5. *Tochangethetemplateforthisgeneratedfilegoto
  6. *Window-Preferences-PHPeclipse-PHP-CodeTemplates
  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\"-sflashversion=9";
  14. //创建shell对象
  15. $WshShell=newCOM("WScript.Shell");
  16. //执行cmd命令
  17. $oExec=$WshShell->Run("cmd/C".$command,0,true);
  18. ?>

java示例

[java]view plaincopyprint?
  1. <%
  2. /*
  3. *Createdon2010-11-17
  4. */
  5. //获取文件所在目录
  6. Stringpath=request.getRealPath("/");
  7. //使用pdf2swf转换命令
  8. Stringcommand="D:/SWFTools/pdf2swf.exe-t\""+path+"\\test.pdf\"-o\""+path+"\\test.swf\"-sflashversion=9";
  9. //执行cmd命令
  10. Runtime.getRuntime().exec("cmd/c"+command);
  11. %>

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

[Javascript]view plaincopyprint?
  1. <scripttype="text/javascript"src="js/swfobject/swfobject.js"></script>
  2. <scripttype="text/javascript">
  3. varswfVersionStr="10.0.0";
  4. varxiSwfUrlStr="playerProductInstall.swf";
  5. varflashvars={
  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. varparams={
  26. }
  27. params.quality="high";
  28. params.bgcolor="#ffffff";
  29. params.allowscriptaccess="sameDomain";
  30. params.allowfullscreen="true";
  31. varattributes={};
  32. attributes.id="FlexPaperViewer";
  33. attributes.name="FlexPaperViewer";
  34. swfobject.embedSWF(
  35. "FlexPaperViewer.swf","flashContent",
  36. "650","500",
  37. swfVersionStr,xiSwfUrlStr,
  38. flashvars,params,attributes);
  39. swfobject.createCSS("#flashContent","display:block;text-align:left;");
  40. </script>
  41. <body>
  42. <divstyle="position:absolute;left:10px;top:10px;">
  43. <divid="flashContent">
  44. </div>
  45. </div>
  46. </body>

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

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

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

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

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

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

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

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