SWFTools使用说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SWFTools 是一组用来处理 Flash 的 swf 文件的工具包,包括:
1. 合并工具 swfcombine
2. 抽取工具 swfextract
3. PDF/JPEG/PNG/AVI/TTF/WAV 到 SWF 的转换工具:pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, and wav2swf|
4. 文本解析工具 swfstrings
5. SWF 解析器 swfdump
6. SWF 读写库 rfxswflib
一个简单的将PDF文档转成SWF的用法:
C:\SWFTools\pdf2swf Paper3.pdf -o Paper3.swf -f -T 9
pdf2swf man page
pdf2swf -s parameters
Current Git
Usage: /usr/local/swft_git/bin/pdf2swf [-options] file.pdf -o file.swf
-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 '%' (file%.swf), then each page goes to a seperate file.
-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.
-v , --verbose Be verbose. Use more than one -v for greater effect. -z , --zlib Use Flash 6 (MX) zlib compression.
-i , --ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated
-j , --jpegquality quality Set quality of embedded jpeg pictures to quality.
0 is worst (small), 100 is best (big). (default:85)
-s , --set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information.
-w , --samewindow When converting pdf hyperlinks, don't make the links open a new window.
-t , --stop Insert a stop() command in each page.
-T , --flashversion num Set Flash Version in the SWF header to num.
-F , --fontdir directory Add directory to the font search path.
-b , --defaultviewer Link a standard viewer to the swf file.
-l , --defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading.
-B , --viewer filename Link viewer filename to the swf file.
-L , --preloader filename Link preloader filename to the swf file.
-q , --quiet Suppress normal messages. Use -qq to suppress warnings, also.
-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).
-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.
-Q , --maxtime n Abort conversion after n seconds. Only available on Unix.
-s Set a SWF encoder specific
PDF Parameters:
PDF device global parameters:
fontdir=<dir> a directory with additional fonts
font=<filename> an additional font filename
pages=<range> the range of pages to convert (example: pages=1-100,210-) zoom=<dpi> the resultion (default: 72)
languagedir=<dir> Add an xpdf language directory
multiply=<times> Render everything at <times> the resolution
poly2bitmap Convert graphics to bitmaps
bitmap Convert everything to bitmaps
SWF Parameters:
SWF layer options:
jpegsubpixels=<pixels> resolution adjustment for jpeg images (same as jpegdpi, but in pixels)
ppmsubpixels=<pixels resolution adjustment for lossless images (same as ppmdpi, but in pixels)
subpixels=<pixels> shortcut for setting both jpegsubpixels and ppmsubpixels
drawonlyshapes convert everything to shapes (currently broken) ignoredraworder allow to perform a few optimizations for creating smaller SWFs
linksopennewwindow make links open a new browser window
linktarget target window name of new links
linkcolor=<color) color of links (format: RRGGBBAA)
linknameurl Link buttons will be named like the URL they refer to (handy for
iterating through links with actionscript)
storeallcharacters don't reduce the fonts to used characters in the output file
enablezlib switch on zlib compression (also done if flashversion>=6)
bboxvars store the bounding box of the SWF file in actionscript variables
dots Take care to handle dots correctly
reordertags=0/1 (default: 1) perform some tag optimizations internallinkfunction=<name> when the user clicks a internal link (to a different page) in the converted file, this actionscript function is called
externallinkfunction=<name> when the user clicks an external link (e.g. http://www.foo.bar/) on the converted file, this actionscript function is called disable_polygon_conversion never convert strokes to polygons (will remove capstyles and joint styles)
caplinewidth=<width> the minimum thichness a line needs to have so that capstyles become visible (and are converted)
insertstop put an ActionScript "STOP" tag in every frame protect add a "protect" tag to the file, to prevent loading in the Flash editor
flashversion=<version> the SWF fileversion (6)
framerate=<fps> SWF framerate
minlinewidth=<width> convert horizontal/vertical boxes smaller than this width to lines (0.05)
simpleviewer Add next/previous buttons to the SWF
animate insert a showframe tag after each placeobject (animate draw order of PDF files)
jpegquality=<quality> set compression quality of jpeg images
splinequality=<value> Set the quality of spline convertion to value (0-100, default: 100).
disablelinks Disable links.
通过代码将PDF转换成SWF来说,现在比较常用的一种方式就是利用SWFTools工具中的pdf2swf(/)。

这个工具还是比较好用的。

转换成的SWF文件质量也不错。

/**
Java代码
* PDF转SWF工具
* @author tangs
*
*/
public class Converter {
public static int convertPDF2SWF(String sourcePath, String destPath,
String fileName) throws IOException {
//目标路径不存在则建立目标路径
File dest = new File(destPath);
if (!dest.exists()) dest.mkdirs();
//源文件不存在则返回
File source = new File(sourcePath);
if (!source.exists()) return 0;
//调用pdf2swf命令进行转换
String command = "D:\\Program Files\\SWFTools\\pdf2swf.exe" + " -o \"" + destPath + "\\" + fileName + "\" <span style="color: rgb(255, 0, 0);">-s
languagedir=D:\\xpdf\\xpdf-chinese-simplified</span> -s flashversion=9 \"" + sourcePath + "\"";
Process pro = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(pro.getInputStream()));
while (bufferedReader.readLine() != null);
try {
pro.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pro.exitValue();
}
public static void main(String []args) throws IOException {
String sourcePath = "c:\\test.pdf";
String destPath = "c:\\";
String fileName = "test.swf";
Converter.convertPDF2SWF(sourcePath, destPath, fileName);
}
}
* PDF转SWF工具
* @author tangs
*
*/
public class Converter {
public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException {
//目标路径不存在则建立目标路径
File dest = new File(destPath);
if (!dest.exists()) dest.mkdirs();
//源文件不存在则返回
File source = new File(sourcePath);
if (!source.exists()) return 0;
//调用pdf2swf命令进行转换
String command = "D:\\Program Files\\SWFTools\\pdf2swf.exe" + " -o \"" + destPath + "\\" + fileName + "\" -s languagedir=D:\\xpdf\\xpdf-chinese-simplified -s flashversion=9 \"" + sourcePath + "\"";
Process pro = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
while (bufferedReader.readLine() != null);
try {
pro.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pro.exitValue();
}
public static void main(String []args) throws IOException {
String sourcePath = "c:\\test.pdf";
String destPath = "c:\\";
String fileName = "test.swf";
Converter.convertPDF2SWF(sourcePath, destPath, fileName);
}
}
就这么简单的几行代码就可以了。

但是在程序中遇到中文就会出现意想不到的情况,这
个也不例外。

在转换中,我发现有些中文PDF文件转换后会出现乱码的现象,因此这里还要
处理一下乱码的问题。

看到上面代码中红色的一段了吗?这就是解决乱码的方法。

这个方法
是参考了/xwx520/blog/item/1d0c423885b392fab311c72e.html这篇
文章,感谢作者。

1.下载XPDF:ftp:///pub/xpdf/xpdf-chinese-simplified.tar.gz,
并解压到xpdf-chinese-simplified目录下。

2.下载字体:/wp-content/uploads/2009/02/font.zip,并解压
到xpdf-chinese-simplified/CMap目录下。

3.修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件。

将里面的路径设为自
己的路径:
4.参照上面的代码,在调用pdf2swf命令中加入“ -s
languagedir=D:\\xpdf\\xpdf-chinese-simplified ”参数。

这样乱码的问题就解决了。

其中把pdf转成swf的工具就是pdf2swf了。

在命令行中运行pdf2swf src.pdf des.swf一
般能满足需求。

而命令行参数可以通过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 Whe n 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. 如果运行时间超时则退出。

--------------------------------------------------------------------------------
然后看看-s都可以设置些什么:
PDF Parameters:
PDF device global parameters:
fontdir= a directory with additional fonts 指定字体目录, 与1级参数的-F相若
font= an additional font filename 增加额外的字体文件
pages= the range of pages to convert (example: pages=1-100,210-) 指定页面范围,与1级参数的-p相若
zoom= the resolution (default: 72) 指定分辨率,默认为72dpi
languagedir= Add an xpdf language directory 增加一个xpdf的语言目录,对非西欧字符有用
multiply= Render everything at the resolution 在几倍分辨率下渲染
poly2bitmap Convert graphics to bitmaps 把其中的图形转成点阵
bitmap Convert everything to bitmaps 把所有内容转成点阵(包括字体)
SWF Parameters:
SWF layer options:
jpegsubpixels=<pixels> resolution adjustment for jpeg images (same as jpegdpi, but in pixels) jpeg图片的分辨率
ppmsubpixels=<pixels> resolution adjustment for lossless images (same asppmdpi, but in pixels) 无损图片的分辨率
subpixels=<pixels> shortcut for setting both jpegsubpixels and ppmsubpixels 快速设置上两个参数
drawonlyshapes convert everything to shapes (currently broken) 所有都转成图形
ignoredraworder allow to perform a few optimizations for creating smaller SWFs 允许执行一些小优化
linksopennewwindow make links open a new browser window 链接打开新窗口linktarget target window name of new links 新链接窗口的名
linkcolor=<color) color of links (format: RRGGBBAA) 链接的颜色linknameurl Link buttons will be named like the URL they refer to (handy for iterating through links with actionscript) 链接名称与链接URL一致storeallcharacters don’t reduce the fonts to used characters in the output file
保存所有的字符字体
enablezlib switch on zlib compression (also done if flashversion>=7) 使用zlib压缩
bboxvars store the bounding box of the SWF file in actionscript variables 在as中保存swf的区域大小
dots Take care to handle dots correctly 保存单点显示reordertags=0/1 (default: 1) perform some tag optimizations 执行某些tag优化internallinkfunction=<name> when the user clicks a internal link (to a different page) in the converted file, this actionscript function is called 内部链接函数,如果点击一个内部链接,将调用该actionscript函数
externallinkfunction=<name> when the user clicks an external link (e.g. http://www.foo.bar/) on the converted file, this actionscript function is called 外部链接函数,如果点击一个外部链接,将调用该actionscript函数
disable_polygon_conversion never convert strokes to polygons (will remove capstyles and joint styles) 不要将笔画转成多边形
caplinewidth=<width> the minimum thichness a line needs to have so that capstyles become visible (and are converted) 线条最低转换宽度,比这个细的线条将不转换
insertstop pu t an ActionScript “STOP” tag in every frame 在swf 的每个桢中添加stop()函数
protect add a “protect” tag to the file, to prevent loadingin the Flash editor 增加protect标签,禁止在flash中加载该swf
flashversion=<version> the SWF fileversion (6) 设置最低swf版本
framerate=<fps> SWF framerate 设置桢率
minlinewidth=<width> convert horizontal/vertical boxes smaller than thiswidth to lines (0.05)将宽度少于某值的矩形转成线条
simpleviewer Add next/previous buttons to the SWF 使用简单的导航
animate insert a showframe tag after each placeobject (animate draw order of PDF files) ???
jpegquality=<quality> set compression quality of jpeg images 设置jpeg的压缩质量splinequality=<value> Set the quality of spline convertion to value (0-100, default: 100). 设置样条曲线的转换质量
disablelinks Disable links. 禁止链接
--------------------------------------------------------------------------------
在含中文的pdf转换时会遇到一些麻烦,具体的解决方法:(javaeye上的文字)
1. 下载swftools:/download.html
下载xpdf xpdf-chinese-simplified
下载两个中文字体文件字体文件
2 .安装swftools 至任意路径
解压缩xpdf 至任意路径
解压缩中文字体至xdpf/chinese-simplified/CMap文件夹下
3. 修改xpdf下xpdfrc文件将cidToUnicode 等路径改为本机路径,
修改xpdf下chinese-simplified/add-to-xpdfrc文件同上
4. 打开命令行窗口: pdf2swf -o 输出文件路径 -t 输入文件路径 -s languagedir=xpdf路径/chinese-simplified
--------------------------------------------------------------------------------
有些pdf中的图形转换效果不好,会产生过多shape,这种情况下可以使用 -s poly2bitmap 的参数,将图形转成点阵。

生成的swf尺寸少了。

带简单导航的:
pdf2swf -o 2.swf -z -s flashversion=7 -s simpleviewer -t 1.pdf
带复杂导航的:
pdf2swf -o 2.swf -z -B rfxview.swf -s flashversion=7 -t 1.pdf -s languagedir=D:/SWFTools/xpdf-chinese-simplified/xpdf/chinese-simplified。

相关文档
最新文档