SWFTools工具包中的PDF2SWF工具可用来将PDF格式文件转换成SWF格式。使用下面的命令可以将pdf文件转换为单页swf文件。
pdf2swf pdfPath –o swfPath –T 9 –f。
pdf2swf为pdf2swf二进制命令的绝对路径;pdfpath为要进行转换的PDF文件的绝对路径;swfPath为转换后swf文件的路径;-T 9 用来设定转换的swf版本为9,这样设置是因为某些版本的swf文件并不能用flexpaper正常显示出来;-f在转换的文档每页中插入一帧,提高转换后文档的稳定性。
每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。应用程序不能创建自己的Runtime类实例,可以通过Runtime类的getRuntime方法获得当前运行时。获得Runtime类实例之后,即可以调用该类的exec方法创建一个新的进程来执行制定的字符串命令。因此,可以利用exec方法来调用之前所述的PDF2SWF命令来完成PDF至SWF文件的转换
官网下载地址:http://www.swftools.org/download.htm
实现利用SWFTools转换PDF文件为SWF格式的算法流程如5-1所示:
第一步,创建PDF2SWF转换命令字符串。
第二步,获得当前运行时Runtime,调用第一步中设定好的转换命令,进行转换。
图5-1 利用SWFTools转换PDF文档为SWF流程
实现代码如下:
public class SWFToolsSWFConverter implements SWFConverter{
private static String PDF2SWF_PATH = "D:\\Program Files (x86)\\SWFTools\\pdf2swf.exe";
@Override
public void convert2SWF(String inputFile, String swfFile) {
File pdfFile = new File(inputFile);
File outFile = new File(swfFile);
if(!inputFile.endsWith(".pdf")){
System.out.println("文件格式非PDF!");
return ;
}
if(!pdfFile.exists()){
System.out.println("PDF文件不存在!");
return ;
}
if(outFile.exists()){
System.out.println("SWF文件已存在!");
return ;
}
String command = PDF2SWF_PATH +" \""+inputFile+"\" -o "+swfFile+" -T 9 -f";
try {
System.out.println("开始转换文档: "+inputFile);
Runtime.getRuntime().exec(command);
System.out.println("成功转换为SWF文件!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("转换文档为swf文件失败!");
}
}
@Override
public void convert2SWF(String inputFile) {
String swfFile = FileUtils.getFilePrefix(inputFile)+".swf";
convert2SWF(inputFile,swfFile);
}
public static void main(String[] args) {
SWFToolsSWFConverter converter= new SWFToolsSWFConverter();
converter.convert2SWF("d:\\test.pdf","d:\\test.swf");
}
}