12

私はwkhtmltopdfの初心者です。Eclipse の動的 Web プロジェクトでwkhtmltopdf を使用する方法を知りたいですか? wkhtmltopdf を Java 動的 Web アプリケーションと統合するにはどうすればよいですか?

wkhtmltopdf の初心者向けのチュートリアルはありますか?

(基本的に、ユーザーが保存ボタンをクリックすると、現在のページが PDF ファイルに保存されるように、Web アプリケーションで wkhtmltopdf を使用したいと思います)。

4

3 に答える 3

14

まず、技術的な注意: Web プロジェクトで wkhtmltopdf を使用したいので、ssh 経由で (つまり、ネットワーク経由で) アクセスする Linux サーバー マシンにデプロイする場合は、パッチを適用した Qt バージョンを使用する必要があります。または、ダミーの X サーバー xvfb などの X サーバーを実行します。(Linux 以外のオペレーティング システムを実行しているサーバーに展開するとどうなるかはわかりません。)

第 2 に、Web プロジェクトで任意の言語から wkhtmltopdf を使用するのは非常に簡単です。

現在のページのサーバー生成バージョンを保存したいだけの場合、つまり、ユーザーがフォームに入力したり、Javascript が新しい DOM 要素を追加したりするなどの変更を加えずに保存したい場合は、 ?generate=pdfonのような追加のオプションの引数が必要です。これにより、そのページが PDF として生成され、PDF ボタンがその URL にリンクされます。単純な JSP などを使用しているだけの場合、これを各ページに手動で追加するのは大変な作業になる可能性がありますが、使用している Web フレームワークによっては、Web フレームワークがすべてのページに同じアクションを実装するのに役立つ場合があります。それを実装する必要があります。

このアプローチを実装するには、おそらく、応答オブジェクトをラップし、そのメソッドgetWriter()getOutputStream()メソッドをオーバーライドして、応答を取得する必要があります。

もう 1 つの方法は、次のページを PDF として生成する「PDF を送信して生成する」ボタンを用意することです。ユーザーが入力する必要があるフォームがある場合、これはより理にかなっています-わかりません。それは本当に設計上の決定です。

3 番目の方法は、Javascript を使用してページの現在の状態をサーバーにアップロードし、wkhtmltopdf を使用してそれを処理することです。これはどのページでも機能します。(これをブックマークレットにすれば、あなたのサイトだけでなく、どのサイトでも使用できます。ただのアイデアです。これは良いアイデアではないかもしれません。)

4 番目の方法は、wkhtmltopdf が URL をフェッチできるため、ページのコンテンツではなくページの URL を渡すことです (これは、リクエストが HTTP GET であった場合、または同じ URL での HTTP GET と同等である場合にのみ機能します)。 )。これには、独自の応答出力をキャプチャするための少量のオーバーヘッドがありますが、おそらく無視できます。おそらくユーザーがログインしているか、暗黙的なセッションを持っている可能性があるため、このアプローチではCookieをCookie jarにコピーする必要がある可能性が非常に高くなります。

ご覧のとおり、非常に多くの選択肢があります。

ここで、問題が残ります。サーバー必要な HTML がある場合、上記のアプローチのいずれかから、それを wkhtmltopdf にフィードする方法は? これはとても簡単です。Runtime.getRuntime().exec()または、呼び出された新しい APIを使用して、外部プロセスを生成する必要がありProcessBuilderます比較用のhtml 。あなたがそれについて賢いなら、一時ファイルを作成する必要なくこれを行うことができるはずです.

wkhtmltopdf Web サイトの 1 つが現在ダウンしていますが、メインの README はこちらから入手でき、コマンド ライン引数について説明しています。

これは、いくつかの指針を与える概略的な回答にすぎません。詳細が必要な場合は、具体的に何を知る必要があるかをお知らせください。

于 2011-04-17T10:15:33.087 に答える
9

追加情報:

java (または任意の言語) から外部プロセスで wkhtmltopdf を呼び出そうとする場合は、コマンド ラインから wkhtmltopdf を使用したときに表示される「通常の」出力 (つまり、期待される出力) に注意してください。 STDOUT を参照) は、STDOUT ではなく、STDERR にあります。プロジェクトページでこの問題を提起しました

http://code.google.com/p/wkhtmltopdf/issues/detail?id=825

wkhtmltopdfはSTDOUTで実際のpdf出力を提供することをサポートしているため、これは設計によるものであると回答されました。詳細と Java コードについては、リンクを参照してください。

于 2012-01-17T07:03:22.860 に答える
6

java-wkhtmltopdf-wrapperは、Javaで使用するための簡単な API を提供wkhtmltopdfします。

また、ヘッドレス サーバーでもそのまま使用できますxvfb

たとえば、Ubuntu または Debian サーバーの場合: aptitude install wkhtmltopdf xvfb

次にJavaで:

Pdf pdf = new Pdf();
pdf.addPage("http://www.google.com", PageType.url);
pdf.saveAs("output.pdf");

その他のオプションについては、Github ページの例を参照してください。

于 2016-11-30T17:02:49.103 に答える