`
雁栖湖
  • 浏览: 23808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PDF2SWF

    博客分类:
  • Java
阅读更多

1、swfTools安装

2、代码:

//InputStreamWathThread.java

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.log4j.Logger;

//这个类主要用来处理一个系统调用而新创建一个线程或进程执行期间所产生的输入流的处理
public class InputStreamWathThread extends Thread {
	private static Logger logger=Logger.getLogger(ErrorInputStreamWathThread.class);
	private Process process = null;
	private boolean over = false;
	public InputStreamWathThread(Process p) {
		process = p;
		over = false;
	}

	public void run() {
		try {
			if (process == null) {
				logger.info("process为null,无法处理文件转换");
				return;
			}

			//对输入流,可能是一个回车之类的输入
			BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
			while (true) {
				if (process == null || over) {
					logger.info("处理完成");
					break;
				}
				String temp;
				while ((temp = br.readLine()) != null) {
//					logger.info("输入流信息:" + temp);//如这些信息:NOTICE  processing PDF page 10 (595x842:0:0) (move:0:0)等等的打印时提示信息
					;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			logger.info("发生异常" + e.getMessage());
		}
	}

	public void setOver(boolean over) {
		this.over = over;
	}
}</pre>
&nbsp;

//ErrorInputStreamWathThread.java
import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.log4j.Logger;

//这个类主要用来处理一个系统调用而新创建一个线程或进程执行期间所产生的出错流的处理
public class ErrorInputStreamWathThread extends Thread {
	private static Logger logger=Logger.getLogger(ErrorInputStreamWathThread.class);
	private Process process = null;
	private boolean over = false;
	public ErrorInputStreamWathThread(Process p) {
		process = p;
		over = false;
	}

	public void run() {
		try {
			if (process == null) {
				logger.info("process为null,无法处理文件转换");
				return;
			}


			//对出错流的处理
			BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
			
			while (true) {
				if (process == null || over) {
					logger.info("处理完成");
					break;
				}
				String temp;
				while ((temp = br.readLine()) != null) {
//					logger.info("出错流信息:" + temp);
					;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			logger.info("发生异常" + e.getMessage());
		}
	}

	public void setOver(boolean over) {
		this.over = over;
	}
}</pre>
&nbsp;

//PDF2SWF .java

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.config.system.SystemConfig;

public class PDF2SWF {
	private static Logger logger=Logger.getLogger(PDF2SWF2.class);
	//注意destPath最后必须带文件分隔符
	//这个用来转换的swfTool工具,一但待转换的文件有不可识别的字符在里面时,它就会堵塞在那里。这个情况要处理掉
	public String  PDF2SWF(String sourcePath,String destPath) throws Exception {

		// 源文件不存在则返回
		File source = new File(sourcePath);
		
		if (!source.exists()) {
			logger.info("pdf转换swf失败,源文件不存在!");
			throw new Exception();
		}
		
		// 目标路径不存在则建立目标路径
		File dest=new File(new File(destPath).getPath().substring(0, new File(destPath).getPath().lastIndexOf("\\")+1));
		if (!dest.exists()) {
			dest.mkdirs();
		}
		//因为下面进行系统调用,这样就会把系统执行的操作新开启一个线程(在此linux也叫进程),所以它和主扫描程序是独立运行,所以下次还会扫描这个转换中的文件,所以这里要将它设置为不可读,
		source.setReadable(false);
		String outputFile =destPath.replace(".swf", "_%.swf");//每页生成一个swf文件
//		String outputFile =destPath;//只生成一个swf文件
		logger.info("开始调用swftools转换pdf文件:" + outputFile);
		List<String>  command = new	ArrayList<String>();
		command.add(SystemConfig.getSWFTools_SERCER_URL());//从配置文件里读取
		command.add("-z");
//		command.add("-B");
//		command.add("rfxview.swf");
	
//		command.add("-s");
//		command.add("poly2bitmap");//加入poly2bitmap的目的是为了防止出现大文件或图形过多的文件转换时的出错,没有生成swf文件的异常
		command.add("-s");
		command.add("drawonlyshapes");
		
		command.add("-s");
		command.add("flashversion=9");
		//windows平台下
//		command.add("languagedir=C:/xpdf/chinese-simplified/");
		command.add(sourcePath);
		command.add("-o");
		command.add(outputFile);
		
		ProcessBuilder processBuilder = new ProcessBuilder();
		processBuilder.command(command);
		Process process = processBuilder.start();
		
//		dealWith(process);//改用下面的方式来处理:
		InputStreamWathThread inputWathThread = new InputStreamWathThread(process);
		inputWathThread.start();
		ErrorInputStreamWathThread errorInputWathThread = new ErrorInputStreamWathThread(process);
		errorInputWathThread.start();
		
		try {
			process.waitFor();//等待子进程的结束,子进程就是系统调用文件转换这个新进程
			inputWathThread.setOver(true);//转换完,停止流的处理
			errorInputWathThread.setOver(true);
		} catch (InterruptedException e) {
			e.printStackTrace();
			System.err.println(e);
		}
		logger.info("转换完成");
		return outputFile;
	}
	
	public static void main(String[] args) {
		PDF2SWF2 pdf2swf = new PDF2SWF2();
		String sourcePath = "D://Test2PDf.pdf";
		String destPath = "d://dest_3.swf";
		try {
			System.out.println(pdf2swf.PDF2SWF(sourcePath, destPath));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
 
分享到:
评论

相关推荐

    PDF2SWF工具

    PDF2SWF工具是一款强大的软件,专门用于将PDF文档转换为SWF(Shockwave Flash)文件格式。这种转换过程能够使PDF文档以交互式的Flash形式呈现,便于在网页上嵌入、在线查看或进行多媒体演示。以下是关于PDF2SWF及其...

    解决pdf2swf中文乱码问题文件全套

    PDF到SWF转换工具`pdf2swf`是一款将PDF文档转换为SWF(ShockWave Flash)文件的开源软件,广泛应用于在线预览、电子书制作等领域。然而,在处理包含中文字符的PDF文档时,可能会遇到中文乱码的问题。本教程将详细...

    pdf2swf将PDF转换成SWF

    将PDF转换成SWF可以使用SWFTools工具中的pdf2swf(http://www.swftools.org/),1、首先下载安装,一直默认下一步即可。 2、java代码: import java.io.BufferedReader; import java.io.File; import java.io....

    pdf2swf及相应的中文语言包

    PDF2SWF是一款实用的工具,它允许用户将PDF文档转换为SWF(Shockwave Flash)格式。这种转换对于在网页上嵌入文档、在线预览或者创建交互式电子书非常有用。SWF文件通常体积小,加载速度快,且可以在各种浏览器中...

    pdf2swf.exe

    标题中的"pdf2swf.exe"是一款名为Swftools的开源工具包中的一个命令行工具,它专门用于将PDF文档转换为SWF(ShockWave Flash)格式的文件。SWF是一种广泛用于网络上的多媒体展示格式,常用于创建交互式动画、演示...

    pdf2swf pages suite

    PDF2SWF Pages Sutie 是一款操作极为简便的转换工具,它可以将PDF文件转换成分页的SWF文件或独立的SWF文件。转换过程一键生成,无需任何人工对文档进行解析操作。每个PDF转换过程序只需几秒至几分钟即可完成。 PDF2...

    pdf2swf.tar.gz

    "pdf2swf"是这样的一个工具,而"pdf2swf.tar.gz"则是一个针对Linux操作系统的压缩包文件。下面我们将详细探讨这个软件及其在Linux环境中的使用。 PDF(Portable Document Format)是一种广泛使用的文件格式,可以...

    (Linux,window)openOffice+pdf2swf+flexpaper

    在这个项目中,我们利用了三个关键组件:OpenOffice,pdf2swf,以及FlexPaper。下面将详细介绍这三个工具及其在项目中的应用。 首先,OpenOffice是一个开源的办公套件,它可以处理多种格式的文档,包括Word、Excel...

    pdf2swf+flexpaper解决pdf在线阅读(类百度文库)

    1. **PDF2SWF**: `pdf2swf`是一款开源命令行工具,它由SwfTools项目提供,能够将PDF文件转换为SWF(ShockWave Flash)格式。SWF是Adobe Flash Player支持的文件格式,可以在网页中播放,因此`pdf2swf`常用于创建可...

    PDF2SWF_Pages_Suite_7.3.5.2_Setup.rar

    PDF2SWF Pages Sutie 是一款操作极为简便的转换工具,它可以将PDF文件转换成分页的SWF文件或独立的SWF文件。转换过程一键生成,无需任何人工对文档进行解析操作。每个PDF转换过程序只需几秒至几分钟即可完成。 PDF...

    PDF2SWF_Pages_Suite

    PDF2SWF Pages Suite 是由残象制作组(www.zinewow.com)开发的一整套功能极为强大的数字出版套装工具软件,它除了能将PDF转换FLASH的SWF格式之外,还能直接使用套装工具将SWF格式转换成多种桌面系统与移动系统的...

    免费pdf2swf pdf转flash文件

    3. 使用`pdf2swf`命令,指定输入的PDF文件和输出的SWF文件路径,例如:`pdf2swf input.pdf -o output.swf`。 4. 可根据需要添加参数调整转换设置,如:`pdf2swf -s flashversion=9 -s quality=high input.pdf -o ...

    flexpaper+openoffice+pdf2swf.exe

    `pdf2swf.exe` 是一个命令行工具,通常用于将PDF文件转换为SWF(Shockwave Flash)文件,这在将PDF文件集成到Web页面中时非常有用。 在线预览技术在当前互联网环境中尤为重要,尤其是在文档共享和协作的场景下。...

    pdf2swf pdf转化为flash的软件 支持Java等程序调用

    pdf2swf pdf转化为flash的软件 支持Java等程序调用

    pdf2swf 解决中文乱码 文件汇总

    pdf2swf是由SwfTools项目提供的一款开源命令行工具,它能够将PDF文档转换为SWF(ShockWave Flash)文件,以便在网络环境中流畅地展示。然而,由于编码兼容性问题,当PDF文档中含有中文字符时,转换后的SWF文件可能会...

    pdf2swf.win.rar

    最新windows绿色版 * 转swf文件软件 font2swf.exe gif2swf.exe jpeg2swf.exe pdf2swf.exe png2swf.exe wav2swf.exe

    PDF2SWF文件

    需要pdf转换成swf格式文件的,请下载,一般应用到flash paper里

Global site tag (gtag.js) - Google Analytics