wkhtmltopdf 执行程序已经加入到path当中。
直接在cmd中运行wkhtmltopdf 是可以运行的。 但是java调用的时候,就报错。
public class WkHtmlToPdf {
public void buildPdf(String htmlPath , String pdfDest){
String comm = "wkhtmltopdf " + htmlPath + " " + pdfDest ;
try {
Runtime.getRuntime().exec(comm);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
new WkHtmlToPdf().buildPdf("E:/etdsreport.html", "E:/aaa.pdf");
System.out.println("Done...");
}}
java.io.IOException: Cannot run program "wkhtmltopdf": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at com.WkHtmlToPdf.buildPdf(WkHtmlToPdf.java:10)
at com.WkHtmlToPdf.main(WkHtmlToPdf.java:18)
Caused by: java.io.IOException: CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5 more
Done...
直接在cmd中运行wkhtmltopdf 是可以运行的。 但是java调用的时候,就报错。
public class WkHtmlToPdf {
public void buildPdf(String htmlPath , String pdfDest){
String comm = "wkhtmltopdf " + htmlPath + " " + pdfDest ;
try {
Runtime.getRuntime().exec(comm);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
new WkHtmlToPdf().buildPdf("E:/etdsreport.html", "E:/aaa.pdf");
System.out.println("Done...");
}}
java.io.IOException: Cannot run program "wkhtmltopdf": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at com.WkHtmlToPdf.buildPdf(WkHtmlToPdf.java:10)
at com.WkHtmlToPdf.main(WkHtmlToPdf.java:18)
Caused by: java.io.IOException: CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5 more
Done...
改为
String comm = "cmd.exe /C wkhtmltopdf " + htmlPath + " " + pdfDest;
ErrorStream输出的是
'wkhtmltopdf' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
但是 wkhtmltopdf 直接在cmd窗口运行,是可以的。
Process process = Runtime.getRuntime().exec("cmd.exe /C java");