我正在使用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
有人能让我知道我做错了吗?
答案 0 :(得分:3)
如ProcessBuilder on OSX中所述,您需要将每个参数组作为单独的字符串传递。因此,不要传递“--zoom 2”,而是传递[“--zoom”,“2”]。我自己就是这么想的。
答案 1 :(得分:2)
使用Runtime代替processBuilder修复它。我仍然不知道为什么“--zoom 2”在processBuilder中不作为参数排除。但是,下面是工作代码。
Runtime rt = Runtime.getRuntime(); 进程p = rt.exec(“C:/ Program Files(x86)/wkhtmltopdf/wkhtmltopdf.exe --zoom 2”+ temphtmlfile.getAbsolutePath()+“”+ filePdf.getAbsolutePath());
答案 2 :(得分:0)
我对参数player.getCurrentTime()
有同样的问题,我发现使用--cookie <name> <value>
我必须传递3个独立的字符串值ProcessBuilder
。
您必须替换
--cookie, <name>, <value>
通过
ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, switches, f.getAbsolutePath(), pdfFileName);
请注意,ProcessBuilder有一个更方便的构造函数,可以使用ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, "--zoom", "2", f.getAbsolutePath(), pdfFileName);