2

私はhtmlファイルをpdfに変換するためにwkhtmltopdfコンバーターを使用しています。出力が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

誰かが私が間違っていることを教えてもらえますか?

4

3 に答える 3

4

OSXのProcessBuilderに記載されているように、各引数グループを個別の文字列として渡す必要があります。したがって、 "-zoom 2"を渡す代わりに、["-zoom"、"2"]を渡します。

于 2013-06-27T18:31:15.407 に答える
2

processBuilderの代わりにRuntimeを使用すると修正されました。「--zoom2」がprocessBuilderのパラメーターとして除外されない理由はまだわかりません。ただし、以下は動作するコードです。

Runtime rt = Runtime.getRuntime();
Process p = rt.exec(
  "C:/Program Files (x86)/wkhtmltopdf/wkhtmltopdf.exe --zoom 2 " 
    + temphtmlfile.getAbsolutePath()
    + " " 
    + filePdf.getAbsolutePath()) ;
于 2013-03-13T20:27:39.337 に答える
0

パラメータに関して同じ問題があり、3つの分離された文字列値を渡す必要が--cookie <name> <value>あることがわかりました。ProcessBuilder--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>

于 2015-05-11T09:57:21.760 に答える