问题是这样,在CMD中我用命令直接将pdf转换swf文件可以成功,但是在我的程序中直接调用转换就不行,也不报错,我现在不知道是怎么了,我查了一些资料说是我的pdf文件格式不正确,但是那为什么在cmd中就可以成功里,求高手帮解决一下这个问题,在此先谢谢了!
解决方案 »
- 谁能帮我测试一下java ee。出错时我按钮继续运行,不再提示,结果现在有错误也不提示了。
- Jboss-----Error installing to Parse
- 在myeclipse下找不到struts2的源代码
- Java编写WebService
- 请问JSP中Config和Context这两个是指什么东西?
- 目前功能最强,最流行的Java XML解析器是什么,列出前三。
- 关于Java的数组?
- 哪里下载cloudscape数据库?
- jb7中ejb的LocalEntityBeanProvider问题
- 微信的内置浏览器是不是不支持文件下载的?
- Hibernate的二级缓存OsCache配置
- struts2中如何多级访问action中的复杂属性
* 用SWFTools把pdf转换为flash文件
* @param src pdf文件路径
* @param target 输出的flash文件路径
* @throws IOException
*/
public static void converToSWF(String src,String target) throws IOException{
Process pro = null;
if (isWindowsSystem()) { //如果是windows系统
String cmd = "D:\\SWFTools\\pdf2swf.exe "+src+" -o "+target+" -T 9" ;//命令行命令
pro = Runtime.getRuntime().exec(cmd);//Runtime执行后返回创建的进程对象
} else {//如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程
String[] cmd = new String[6];
cmd[0] = "/usr/local/bin/pdf2swf";
cmd[1] = src;
cmd[2] = "-o";
cmd[3] = target;
cmd[4] = "-T";
cmd[5] = "9";
pro = Runtime.getRuntime().exec(cmd);//Runtime执行后返回创建的进程对象
}
final InputStream is = pro.getInputStream();
new Thread(
new Runnable(){
public void run(){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
while(br.readLine() != null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is_ = pro.getErrorStream();
BufferedReader br_ = new BufferedReader(new InputStreamReader(is_));
StringBuilder buf = new StringBuilder(); // 保存输出结果流
String line = null;
while((line = br_.readLine()) != null){
buf.append(line); // 循环等待ffmpeg进程结束
}
System.out.println("输出结果为:" + buf);
}
/**
* 判断是否是windows操作系统
* @author iori
* @return
*/
private static boolean isWindowsSystem() {
String p = System.getProperty("os.name");
System.out.println(p);
return p.toLowerCase().indexOf("windows") >= 0 ? true : false;
}