仿百度,豆瓣读书文库阅读器
FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。 另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。 利用 ?FlexPaper?基于Flex实现,可以在线浏览PDF文档,而不要PDF软件支持。它支持的扩展名就是.swf,所以再需要一款软件,使得PDF自动转换为SWF格式。它就是 swftools ?。操作很简单,首先第一步:
下载swftools
http://www.swftools.org/download.htm
安装后可以先试下里面的命令
C:SWFToolspdf2swf Paper3.pdf -o Paper3.swf?
当然安装目录自己指定,Papaer3.pdf也是自己指定路径。
第二步:下载
http://flexpaper.devaldi.com/download/Flash版本
下载完后打开可以发现里面有个index.html,查看内容可以得到一段script脚本
<script type="text/javascript" src="js/flexpaper_flash.js"></script>
? ? </head>?
? ? <body>?
? ? <div style="position:absolute;left:10px;top:10px;">
? ? ? ?<a id="viewerPlaceHolder" style="width:680px;height:480px;display:block"></a>
? ? ? ?
? ? ? ?<script type="text/javascript">?
var fp = new FlexPaperViewer(
'FlexPaperViewer',
'viewerPlaceHolder',{ config : {
SwfFile : escape('Paper.swf'),204)">
Scale : 0.6,?
ZoomTransition : 'eaSEOut',204)">
ZoomTime : 0.5,204)">
ZoomInterval : 0.2,204)">
FitPageOnLoad : true,204)">
FitWidthOnLoad : false,204)">
FullScreenAsMaxWindow : false,204)">
ProgressiveLoading : false,204)">
MinZoomSize : 0.2,204)">
MaxZoomSize : 5,204)">
SearchMatchAll : false,204)">
InitViewMode : 'Portrait',204)">
PrintPaperAsBitmap : false,204)">
ViewModeToolsVisible : true,204)">
ZoomToolsVisible : true,204)">
NavToolsVisible : true,204)">
CursorToolsVisible : true,204)">
SearchToolsVisible : true,204)">
? localeChain: 'en_US'
}});
? ? ? ?</script>
? ? ? ? </div>
参数基本可以参考英文,里面的Paper.swf就是调用的文件。
我现在放一个自己的PDF文件,然后运行这段程序可以看到
? ? 很简单的,如果没有加载文件,那么就是要到 http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065
将文件添加为信任才行。
? 一. 使用PDF2SWF准备好你的文档 首先要将PDF转成SWF,这步可以使用开源的SwfTools自动完成 1.下载安装 SwfTools,当前最新版本是0.9 二. 使用已经编译好的FlexPaper的flash版本浏览你的文档
三. 在Flex中使用FlexPaper 1. 下载FlexPaper SWC,添加到你的Flex项目libs中 <?xml version="1.0" encoding="utf-8"?> ?网友写的一个方法可以利用JAVA转化pdf为swf: /** * 将pdf文件转化成swf文件 * @param fileName 文件的绝对路径 * @param destPath 目标路径 * @return -1:源文件不存在,-2:格式不正确,-3:发生异常,0:转化成功 * @author fanglm created on Jul 9,2010 1:13:04 PM */ public static int ConvertPdfToSwf(String fileName,String destPath){ String destName = "",fileExt = ""; StringBuffer command = new StringBuffer(); fileExt = fileName.split("//.")[fileName.split("//.").length-1].toLowerCase(); try{ File file = new File(fileName); if(!file.exists()){//判断源文件是否存在 return -1; }else if(!fileExt.equals("pdf")){//判断文件是否是pdf格式的文件 return -2; } else{ String swftoolsPath = "D://SWFTools";//获取pdf转swf工具的路径 if(!swftoolsPath.substring(swftoolsPath.length()-1,swftoolsPath.length()).equals("//")){ swftoolsPath = swftoolsPath+"//"; //在目录后加 "/" } if(!destPath.substring(destPath.length()-1,destPath.length()).equals("//")){ destPath = destPath+"//"; //在目录后加 "/" } File destFile = new File(destPath); if(!destFile.exists()){//目标文件路径如果不存在,则创建目录 destFile.mkdirs(); } destName = file.getName().substring(0,file.getName().length()-4)+".swf";//目标文件名称 command.append(swftoolsPath).append("pdf2swf.exe ").append(fileName).append(" -o ").append(destPath).append(destName); Process pro = Runtime.getRuntime().exec(command.toString()); BufferedReader buffer = new BufferedReader(new InputStreamReader(pro.getInputStream())); while(buffer.readLine()!=null); return pro.exitValue(); } }catch (Exception e){ e.printStackTrace(); return -3; } } 如果遇到 PDF2SWF转换只有一页的PDF文档,在FlexPaper不显示,在执行的命令后面加上“-T 9”转换成flash 9 格式即可解决。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |