我正在使用wkhtmltopdf转换器将html文件转换为pdf。除输出不适合pdf页面外,它工作正常。使用--zoom 2可以在命令行中解决该问题,但是在我的代码中使用该功能却无济于事。下面是我的代码。
String wkhtmltopdf = "C:/Program Files (x86)/wkhtmltopdf/wkhtmltopdf.exe ";
String switches = " --zoom 2 ";
ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, switches, f.getAbsolutePath(), pdfFileName);
Process process = pb.start();
在命令行中可以正常工作。
C:\Program Files (x86)\wkhtmltopdf>wkhtmltopdf.exe --zoom 2 C:\Users\D
esktop\eclipse-jee-indigo-SR2-win32-x86_64\eclipse\temphtml1.htm C:\Users\Desktop\temp\test.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
有人可以让我知道我在做什么错吗?
如ProcessBuilder on OSX中所述,您需要将每个参数组作为单独的字符串传递。因此,您无需传递[--zoom 2“,而可以传递[” --zoom“,” 2“]。我只是自己想出来的。
使用运行时代替processBuilder对其进行了修复。我仍然不知道为什么不将“ --zoom 2”作为processBuilder中的参数。但是,下面是工作代码。
Runtime rt = Runtime.getRuntime();
Process p = rt.exec(
"C:/Program Files (x86)/wkhtmltopdf/wkhtmltopdf.exe --zoom 2 "
+ temphtmlfile.getAbsolutePath()
+ " "
+ filePdf.getAbsolutePath()) ;
我在参数--cookie <name> <value>
上遇到了同样的问题,并且我发现使用ProcessBuilder
我必须传递3个单独的字符串值--cookie, <name>, <value>
。
您必须替换
ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, switches, f.getAbsolutePath(), pdfFileName);
作者
ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, "--zoom", "2", f.getAbsolutePath(), pdfFileName);
请注意,ProcessBuilder具有更方便的构造函数,可以使用List<String>