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

              在仿百度文库的方案(三)中讲述了如何把文档转换成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,调用第一步设置好的转换命令符,进行转换。如图:

            [置顶] 仿百度文库解决方案(四)-调用swfTools把pdf格式文件转换成swf格式文件_第1张图片

                   明白了解题的思路,下面来看一下转换用到的主要代码:

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);
//	}

}


  注释  : 由于代码里只是进行了转换功能代码的主要书写,没有考虑路径是否正确,安装路径的问题,以及文档不存在等问题,由于只是忙着赶项目,了解的不是很全面,希望大家理解。

           

你可能感兴趣的:([置顶] 仿百度文库解决方案(四)-调用swfTools把pdf格式文件转换成swf格式文件)