【发布时间】:2012-07-11 14:23:28
【问题描述】:
我正在从 Java 运行 wkhtmltopdf。我创建了一个进程,但这个进程似乎挂起,因为它在控制台一次又一次地重复,也在任务管理器中。
这就是我运行 wkhtmltopdf 的方式:
String command = applicationLocation + "wkhtmltopdf.exe -O Landscape " + reqURL + "?" + reqQuery + " c:/PDF/" + folderName + "/" + id + "/" + folderName + ".pdf";
Process p = Runtime.getRuntime().exec(command);
工作完成后,我如何“破坏”该流程?
这对我不起作用,进程从未停止,代码也从未进入 while 循环:
ProcessBuilder pb = new ProcessBuilder(application, htmlFilePath, pdfFilePath);
Process process = pb.start();
BufferedReader errStreamReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
System.out.println("read errstreamreader");
//not "process.getInputStream()"
String line = null;
line = errStreamReader.readLine();
while(line != null) {
System.out.println(line);
line = errStreamReader.readLine();
if(line.equals("Done")) {
process.destroy();
System.out.println("destroyed process");
}
}
【问题讨论】:
-
您预计会出现错误吗?如果您没有收到错误消息,您将永远不会破坏该进程。
-
wkhtmltopdf 默认写入 stderr。
标签: java process pdf-generation bufferedreader wkhtmltopdf