在仿百度文库的方案(三)中述说了怎样把文档转换成pdf格式,在这儿我们须要把pdf格式转换成swf格式的文件。就像上文转换pdf格式的文件须要转换软件这儿用到的是swfTools软件。首先我们来看一下swftools的简介。
SWFTOOLS软件的简介:
SWFTools是一种实用工具与AdobeFlash文件(SWF文件)工作的集合。该工具集包括用于阅读的SWF文件,结合她们,和她们构建从其他内容(如图像,声音文件,视频或源代码)程序。SWFTools是在GPL下发布的。
PDF2SWF一个PDF格式的SWF转换器。每页生成一帧。使您就能完全低格的文本,包括表格,公式,在你的Flash动漫图形等。它的基础上的xpdfPDF格式Noonburg解析器从德里克二。
SWFCombine阿诸如改变大小)多工具插入功能主权财富基金主权财富基金到包装,contatenating主权财富基金,主权财富基金或堆叠操作的基本参数(。
SWFStrings扫描主权财富基金的文本数据。
SWFDump复印出主权财富基金的各类信息的图象,例如载/数据字体/声音,拆卸所载代码以及交叉参考和边界框。
JPEG2SWF接受一个或多个JPEG图片,并生成一个从她们的SWF幻kt板。支持运动恐怕压缩(H.263的)更好的视频序列压缩。
PNG2SWF像JPEG2SWF,只为PNG图象。
GIF2SWF转换的GIF到SWF。还能否处理GIF动漫。
WAV2SWFWAV音频文件转换成SWF文件,使用的LAMEMP3编码器库。AVI2SWFAVI动漫文件转换为SWF。它支持FlashMX的H.263的压缩。一些事例可在examples.html。(注意:此工具不包含在最新的版本了,由于ffmpeg或则MEncoder的工作如今做的更好)
Font2SWF转换字体文件(TTF整合,类型1)到SWF。
SWFBBox容许读出,优化和调整的SWF包围盒。
SWFC一个简单的脚本文件的工具创建的SWF文件从。包括这两个ActionScript2.0和ActionScript3.0的支持。
SWFExtract容许提取电影剪辑,声音,图象等,从SWF文件。
AS3Compile一个独立的ActionScript3.0编译器。兼容大多使用Flex。
SWFTools支持Solarislinux下 打开swf文件linux下 打开swf文件,Linux(32和64位),FreeBSD,OpenBSD和HP-UX,Solaris和MacOSX和Windows98/ME/2000/XP/Vista/7等工作环境。
把pdf格式转换成swf格式只要在命令行中写入参数就好,下边是SWFTOOLS中命令行参数的值如下:
通常能满足需求。而命令行参数可以通过pdf2swf-f得到:
-h,–helpPrintshorthelpmessageandexit复印帮助信息
-V,–versionPrintversioninfoandexit复印版本号
-o,–outputfile.swfDirectoutputtofile.swf.Iffile.swfcontains‘13568621′(file13568630.swf),theneachpage指定输出的swf文件名
-p,–pagesrangeConvertonlypagesinrangewithrangee.g.1-20
or1,4,6,9-11or
指定转换的页面范围,使用的页脚描述方式与复印机复印文件时侯的选页一样
-P,–passwordpasswordUsepasswordfordecipheringthepdf.指定打开pdf的密码
-v,–verboseBeverbose.Usemorethanone-vforgreatereffect.转换时输出详尽的内容
-z,–zlibUseFlash6(MX)zlibcompression.使用Flash6的zlib压缩机制
-i,–ignoreAllowspdf2swftochangethedraworderofthepdf.Thismaymakethegenerated容许程序更改pdf的勾画次序,可能会造成结果与原先有差别
-j,–jpegqualityqualitySetqualityofembeddedjpegpicturestoquality.0isworst(small),100isbest(big).(default:85)设置转换其中的jpeg图片的质量linux 下载工具,从0到100,默认值是85。
-s,–setparam=valueSetaSWFencoderspecificparameter.Seepdf2swf-shelpformoreinformation.设置SWF转码时侯的参数,具体参数可以用pdf2swf-shelp获取
-w,–samewindowWhenconvertingpdfhyperlinks,don’tmakethelinksopenanewwindow.设置转换后的swf打开原pdf中的联接时使用相同的窗口
-t,–stopInsertastop()commandineachpage.在每页结尾添加一个stop()命令
-T,–flashversionnumSetFlashVersionintheSWFheadertonum.设置SWF所使用的flash版本号
-F,–fontdirdirectoryAdddirectorytothefontsearchpath.指定字体文件所在路径
-b,–defaultviewerLinkastandardviewertotheswffile.指定默认的swf导航文件linux桌面,拿来翻页、放大缩小等等
-l,–defaultloaderLinkastandardpreloadertotheswffilewhichwillbedisplayedwhilethemainswfisloading.指定默认的swf加载文件,拿来显示加载进程疗效
-B,–viewerfilenameLinkviewerfilenametotheswffile.指定swf导航文件,作用同-b
-L,–preloaderfilenameLinkpreloaderfilenametotheswffile.指定swf加载文件,作用同-l
-q,–quietSuppressnormalmessages.Use-qqtosuppresswarnings,also.不复印普通讯息,用-qq就不复印警告信息。
-S,–shapesDon’tuseSWFFonts,butstoreeverythingasshape.不使用字体,所有都转为形
-f,–fontsStorefullfontsinSWF.(Don’treducetousedcharacters).在swf中保存全部字体。
-G,–flattenRemoveasmanycliplayersfromfileaspossible.在文件中尽量除去电影层,合并它们
-I,–infoDon’tdoactualconversion,justdisplayalistofallpagesinthePDF.不做实际转换,仅显示PDF的信息。
-Q,–maxtimenAbortconversionafternseconds.OnlyavailableonUnix.假如运行时间超时则退出。
SwfTools当前最新的版本为swfTools3.5,官网为
本文用到的版本是swftools-0.9.0.tar.zip,下载的地址是
在前面我们了解swfTools软件,下边我们来说一下借助swfTools把pdf转换成swf格式的算法流程。
第一步:创建PDF2SWF转换的命令字符串。
第二步:获取当前的RunTimes,调用第一步设置好的转换命令符,进行转换。如图:
明白了解题的思路,下边来看一下转换用到的主要代码:
package test.test1;
import java.io.File;
import java.io.IOException;
//转换成swf格式的
public class convertPdf {
/**
* @param args
*/
private static String PDF2SWF_PATH = "C:\Program Files\SWFTools\pdf2swf.exe";//swftools工具的安装路径
public void convertPDF(String inputFile, String outputFile) {
File pdfFile = new File(inputFile);
File swfFile = new File(outputFile);
if(!inputFile.endsWith(".pdf")){
System.out.println("文件格式不是pd");
return ;
}
if(!pdfFile.exists()){
System.out.println("pdf文件已存在!");
return ;
}
if(swfFile.exists()){
System.out.println("swf文件已存在!");
return ;
}
//进行转换
try{
/*
* languagedir=D:\xpdf-chinese-simplified 用于处理pdf转换时出现的乱码
* 处理pdf转换的乱码需要进行三步
* 1 下载XPDF:ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz 解压到 D:xpdf-chinese-simplified
2下载字体:http://blog.pjoke.com/wp-content/uploads/2009/02/font.zip 解压到D:xpdf-chinese-simplifiedCMap
3 配置打开并修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件。将里面的路径设为自己的路径:
*/
String command = PDF2SWF_PATH +" ""+inputFile+"" -o "+swfFile+" -T 9 -s languagedir=D:\xpdf-chinese-simplified";//-s languagedir=D:\xpdf-chinese-simplified是用来处理转换时出现的中文乱码
System.out.println("开始转换文档: "+inputFile);
Runtime.getRuntime().exec(command);
System.out.println("成功转换为SWF文件!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("转换文档为swf文件失败!");
}
}
// public static void main(String[] args) {
// // TODO Auto-generated method stub
// convertPdf c = new convertPdf();
// String inputFile ="d:/resource/2.pdf";
// String outputFile = "d:/4.swf";
// c.convertPDF(inputFile,outputFile);
// }
}
注释:因为代码里只是进行了转换功能代码的主要书写,没有考虑路径是否正确,安装路径的问题,以及文档不存在等问题,因为只是忙着赶项目,了解的不是很全面,希望你们理解。