FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。
另外你也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。
利用 FlexPaper基于Flex实现,可以在线浏览PDF文档,而不要PDF软件支持。它支持的扩展名就是.swf,所以再需要一款软件,使得PDF自动转换为SWF格式。它就是 swftools 。操作很简单,首先第一步:
一. 使用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版本浏览你的文档
- 下载并解压出已经编译好的FlexPaper
- 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之间的数,表示显示的放大参数 - 复制你创建出来的swf和PDF2SWF到解压缩出的相同目录
- 确定你添加了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 格式即可解决。