您的位置:首页 > 其它

仿百度文库解决方案(四)-调用swfTools把pdf格式文件转换成swf格式文件

2012-07-23 08:59 381 查看
在仿百度文库的方案(三)中讲述了如何把文档转换成pdf格式,在这里我们需要把pdf格式转换成swf格式的文件。如同上文转换pdf格式的文件需要转换软件这里用到的是swfTools软件。首先我们来看一下swftools的简介。

SWFTOOLS软件的简介 :

SWFTools是一种实用工具与Adobe Flash文件(SWF文件)工作的集合。 该工具集包括用于阅读的SWF文件,结合他们,和他们建立从其他内容(如图像,声音文件,视频或源代码)程序。 SWFTools是在GPL下发布的。

PDF2SWF一个PDF格式的SWF转换器。 每页生成一帧。 使您能够完全格式化的文本,包括表格,公式,在你的Flash动画图形等。 它的基础上的xpdf PDF格式Noonburg解析器从德里克二。

  SWFCombine阿例如改变大小)多工具插入功能主权财富基金主权财富基金到包装,contatenating主权财富基金,主权财富基金或堆叠操作的基本参数(。

  SWFStrings扫描主权财富基金的文本数据。

  SWFDump打印出主权财富基金的各种信息的图像,比如载/数据字体/声音,拆卸所载代码以及交叉参考和边界框。

  JPEG2SWF接受一个或多个JPEG图片,并生成一个从他们的SWF幻灯片。 支持运动估计压缩(H.263的)更好的视频序列压缩。

  PNG2SWF像JPEG2SWF,只为PNG图像。

  GIF2SWF转换的GIF到SWF。 还能够处理GIF动画。

  WAV2SWF WAV音频文件转换成SWF文件,使用的LAME MP3编码器库。AVI2SWF AVI动画文件转换为SWF。 它支持Flash MX的H.263的压缩。 一些例子可在examples.html 。 (注意:此工具不包含在最新的版本了,因为ffmpeg或者MEncoder的工作现在做的更好)

  Font2SWF转换字体文件(TTF整合,类型1)到SWF。

  SWFBBox允许读出,优化和调整的SWF包围盒。

  SWFC一个简单的脚本文件的工具创建的SWF文件从。 包括这两个ActionScript 2.0和ActionScript 3.0的支持。

  SWFExtract允许提取影片剪辑,声音,图像等,从SWF文件。

  AS3Compile一个独立的ActionScript 3.0编译器。 兼容大多使用Flex。

  SWFTools支持Solaris,Linux(32和64位),FreeBSD,OpenBSD和HP - UX,Solaris和MacOS X和Windows 98/ME/2000/XP/Vista/7 等工作环境。

把pdf格式转换成swf格式只要在命令行中写入参数就好,下面是SWFTOOLS中命令行参数的值 如下:

一般能满足需求。而命令行参数可以通过pdf2swf -f得到:
-h , –help Print short help message and exit 打印帮助信息
-V , –version Print version info and exit 打印版本号

-o , –output file.swf Direct output to file.swf. If file.swf contains ‘13568621′ (file13568630.swf), then each page指定输出的swf文件名

-p , –pages range Convert only pages in range with range e.g. 1-20

or 1,4,6,9-11 or

指定转换的页面范围,使用的页码描述方法与打印机打印文件时候的选页一样
-P , –password password Use password for deciphering the pdf.指定打开pdf的密码

-v , –verbose Be verbose. Use more than one -v for greater effect.转换时输出详细的内容

-z , –zlib Use Flash 6 (MX) zlib compression.使用Flash 6的zlib压缩机制

-i , –ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated允许程序修改pdf的绘制顺序,可能会导致结果与原来有差异

-j , –jpegquality quality Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)设置转换其中的jpeg图片的质量,从0到100,默认值是85。

-s , –set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information. 设置SWF转码时候的参数,具体参数可以用pdf2swf -s help获取

-w , –samewindow When converting pdf hyperlinks, don’t make the links open a new window. 设置转换后的swf打开原pdf中的连接时使用相同的窗口

-t , –stop Insert a stop() command in each page. 在每页结尾添加一个stop()命令

-T , –flashversion num Set Flash Version in the SWF header to num. 设置SWF所使用的flash版本号

-F , –fontdir directory Add directory to the font search path. 指定字体文件所在路径

-b , –defaultviewer Link a standard viewer to the swf file. 指定默认的swf导航文件,用来翻页、放大缩小等等

-l , –defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading. 指定默认的swf加载文件,用来显示加载进程效果

-B , –viewer filename Link viewer filename to the swf file. 指定swf导航文件,作用同-b

-L , –preloader filename Link preloader filename to the swf file. 指定swf加载文件,作用同-l

-q , –quiet Suppress normal messages. Use -qq to suppress warnings, also. 不打印普通信息,用-qq就不打印警告信息。

-S , –shapes Don’t use SWF Fonts, but store everything as shape. 不使用字体,所有都转为形

-f , –fonts Store full fonts in SWF. (Don’t reduce to used characters). 在swf中保存全部字体。

-G , –flatten Remove as many clip layers from file as possible. 在文件中尽量去除影片层,合并它们

-I , –info Don’t do actual conversion, just display a list of all pages in the PDF. 不做实际转换,仅显示PDF的信息。

-Q , –maxtime n Abort conversion after n seconds. Only available on Unix. 如果运行时间超时则退出。
SwfTools当前最新的版本为swfTools3.5,官网为http://www.swftools.com/
本文用到的版本是swftools-0.9.0.tar.zip ,下载的地址是http://download.csdn.net/download/yali1990515/4443798

在上面我们了解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-simplified\CMap\
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);
//	}

}


注释 : 由于代码里只是进行了转换功能代码的主要书写,没有考虑路径是否正确,安装路径的问题,以及文档不存在等问题,由于只是忙着赶项目,了解的不是很全面,希望大家理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐