无法获得在Java代码中使用的wkhtmltopdf属性

问题描述 投票:2回答:3

我正在使用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

有人可以让我知道我在做什么错吗?

java process wkhtmltopdf processbuilder
3个回答
3
投票

ProcessBuilder on OSX中所述,您需要将每个参数组作为单独的字符串传递。因此,您无需传递[--zoom 2“,而可以传递[” --zoom“,” 2“]。我只是自己想出来的。


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()) ;

0
投票

我在参数--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>

© www.soinside.com 2019 - 2024. All rights reserved.