pdf2swf转换关于p.waitFor();执行的问题

空白码生 发布于 2012/08/23 15:52
阅读 3K+
收藏 2

 我在写一个关于仿百度、豆丁网在线文档阅读的功能时,遇到一个棘手的问题,不知道怎么解决啊,在这分享下:我用的软件:myeclipse+mysql+tomcat6服务器;关于pdf转换为swf文件时,p.waitFor();语句执行导致不能生成swf文件,但我发现当我把tomcat服务器关闭后文件就生成了,这个把问题怎么解决啊?在服务器不关的情况下也要生成swf文件。下面是转换的代码,问下能否有好的解决方案啊?

//转换成swf文件

r = Runtime.getRuntime();

if(!swfFile.exists()){

if(pdfFile.exists()) {

System.out.println("--------------执行到这里---1");

try {

Process p = r.exec("D:/Program Files/SWFTools/pdf2swf.exe " + pdfFile.getPath() + " -o " + swfFile.getPath() + " -T 9");

System.out.println("--------------执行到这里---2");

p.waitFor();

System.out.println("--------------执行到这里---3");

swfFile.createNewFile();

System.out.println("--------------执行到这里---4");

System.out.println("第三步:转换为SWF格式 路径:" + swfFile.getPath());

System.out.println("第四步:转换为SWF格式mingcheng:" + swfFile.getName());

if(pdfFile.exists()) {

pdfFile.delete();

}

} catch (Exception e) {

e.printStackTrace();

try {

throw e;

} catch (Exception e1) {

e1.printStackTrace();

}

}

} else {

System.out.println("PDF文件不存在,无法转换");

}

} else {

System.out.println("已经转为SWF文件,无需再次转换");

if(pdfFile.exists()) {

pdfFile.delete();

}

}

加载中
0
xu81.com
xu81.com

这跟swftools没关系,建议看下java api里的Process wariFor()方法是干嘛用的。

想在java里监控系统shell需要多线程来处理

0
空白码生
空白码生

引用来自“xu81.com”的答案

这跟swftools没关系,建议看下java api里的Process wariFor()方法是干嘛用的。

想在java里监控系统shell需要多线程来处理

我看了啊,API上说:导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止,

导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。 

但是不执行该语句将不能正确转换,我试过了,那要怎么处理呢?

0
空白码生
空白码生

引用来自“xu81.com”的答案

得到结果是一个空的swf文件?怎么回事啊,急搞了很久了,找不到解决办法
0
xu81.com
xu81.com

这段代码是我原来项目中的代码,目前还在使用中,你直接命令行执行试下,不要带路径。

对了,我忘记放命令行格式:

public static final String PDF2SWF = "pdf2swf.exe -o \"%?%\" -s flashversion=9 \"";

0
空白码生
空白码生

引用来自“xu81.com”的答案

这段代码是我原来项目中的代码,目前还在使用中,你直接命令行执行试下,不要带路径。

对了,我忘记放命令行格式:

public static final String PDF2SWF = "pdf2swf.exe -o \"%?%\" -s flashversion=9 \"";

不要带路径吗?那怎么找源文件啊?我试下先

0
空白码生
空白码生

引用来自“依然1203”的答案

引用来自“xu81.com”的答案

这段代码是我原来项目中的代码,目前还在使用中,你直接命令行执行试下,不要带路径。

对了,我忘记放命令行格式:

public static final String PDF2SWF = "pdf2swf.exe -o \"%?%\" -s flashversion=9 \"";

不要带路径吗?那怎么找源文件啊?我试下先

String param, String orginName,
        String savePath

,,这三个参数是什么啊?文件路径吗?pdf2swf.exe也没有路径的吗

0
xu81.com
xu81.com
pdf2swf不带路径   pdf2swf最好是放到环境变量里
0
空白码生
空白码生

引用来自“xu81.com”的答案

pdf2swf不带路径   pdf2swf最好是放到环境变量里
没看懂啊?String param, String orginName,   String savePath这三个参数是什么?
0
xu81.com
xu81.com
param是原文件名,orginName是保存后文件名,savePath是保存路径,代码中有前置处理,不用太在意。
返回顶部
顶部