仿百度,豆瓣读书文库阅读器

FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。

另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。


利用  FlexPaper 基于Flex实现,可以在线浏览PDF文档,而不要PDF软件支持。它支持的扩展名就是.swf,所以再需要一款软件,使得PDF自动转换为SWF格式。它就是 swftools  。操作很简单,首先第一步:
安装后可以先试下里面的命令
C:\SWFTools\pdf2swf 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'),
Scale : 0.6, 
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : false,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'Portrait',
PrintPaperAsBitmap : false,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
  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
2. 转换PDF到SWF,可以通过命令行的方式,例如将Paper3.pdf转换成Paper3.swf
C:\SWFTools\pdf2swf Paper3.pdf -o Paper3.swf

二. 使用已经编译好的FlexPaper的flash版本浏览你的文档

  1. 下载并解压出已经编译好的FlexPaper
  2. zip文件包含一个例子文件叫做FlexPaperViewer.html,它向你展示了需要传给FlexPaper的 基本参数
    var params = {
    SwfFile : "Paper.swf",
    Scale : 0.6
    }
    swfobject.embedSWF("FlexPaperViewer.swf","cb","500","500","9.0.0","js/swfobject/expressInstall.swf", params);

    //SwfFile参数是你想显示的文件,Scale是0-1之间的数,表示显示的放大参数
  3. 复制你创建出来的swf和PDF2SWF到解压缩出的相同目录
  4. 确定你添加了FlexPaperViewer.swf

三. 在Flex中使用FlexPaper

1. 下载FlexPaper SWC,添加到你的Flex项目libs中
2. 复制你用PDF2SWF创建的SWF到你的bin-debug目录,如Paper3.swf,添加FlexPaper组 件到你的flex代码中Xml代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute"
    width="800" height="500"
    xmlns:flexpaper="com.devaldi.controls.flexpaper.*">
   
    <flexpaper:FlexPaperViewer width="800" height="500"
        Scale="1" SwfFile="Paper3.swf" />
   
</mx:Application>


 网友写的一个方法可以利用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 格式即可解决。


  • 11
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值