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...

解决方案 »

  1.   

    String comm = "wkhtmltopdf " + htmlPath + " " + pdfDest  ;
    改为
    String comm = "cmd.exe /C wkhtmltopdf " + htmlPath + " " + pdfDest;
      

  2.   


    ErrorStream输出的是
    'wkhtmltopdf' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    但是 wkhtmltopdf 直接在cmd窗口运行,是可以的。
      

  3.   

    同样的方式,我运行java命令都没有问题(java也是通过path指定的),如下:
    Process process = Runtime.getRuntime().exec("cmd.exe /C java");