既存の(X)HTMLドキュメントからPDFファイルを自動的に生成する必要があります。入力ファイル(レポート)は、かなりシンプルなテーブルベースのレイアウトを使用しているため、本当に派手なJavaScript/CSSのサポートはおそらく必要ありません。
私はJavaでの作業に慣れているため、Javaプロジェクトで簡単に使用できるソリューションが望ましいです。ただし、Windowsシステムでのみ動作する必要があります。
それを実行する1つの方法は実現可能ですが、(少なくとも箱から出して)良質の出力を生成しません。 CSS2XSLFO とApache FOPを使用してPDFファイルを作成します。私が遭遇した問題は、CSS属性が適切に変換される一方で、テーブルレイアウトがかなり混乱し、テキストがテーブルセルから流出することでした。
また、Geckoレンダリングエンジンを使用するためのJava-APIであるJrexについても簡単に調べました。
Internet Explorerのレンダリングエンジンからレンダリングされたページを取得し、自動的にPDF-Printerツールに送信する方法はありますか? WindowsでのOLEプログラミングの経験がないため、何が可能か、何が可能かはわかりません。
アイデアはありますか?
EDIT:FlyingSaucer/iTextは非常に有望に見えます。私はそれで行こうとします。
すべての答えをありがとう
Flying Saucer XHTMLレンダラープロジェクトは、XHTMLからPDFへの出力をサポートしています。例をご覧ください here 。
WKHTMLTOPDF を試しましたか?
これは、WebKitのオープンソース実装である単純なシェルユーティリティです。両方とも無料です。
小さなチュートリアルを設定しました here
EDIT(2017):
今日何かを構築することであれば、私はもうそのルートには行きません。
しかし、代わりに http://pdfkit.org/ を使用します。
おそらく、nodejsの依存関係をすべて取り除き、ブラウザーで実行します。
チェックアウト iText ; HTMLからのデータの読み取りをサポートする純粋なJava PDFツールキットです。最近、プロジェクトでCMSからコンテンツをプルしてPDFファイルとしてエクスポートする必要があるときに使用しましたが、それはかなり簡単でした。 CSSおよびスタイルタグのサポートはかなり制限されていますが、問題なくテーブルをレンダリングします(列幅を設定することはできませんでした)。
HTMLからPDFを作成すると、次のようになります。
Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
資金がある場合、 Prince XMLこのビデオが示すように
Internet Explorerのレンダリングエンジンからレンダリングされたページを取得し、自動的にPDF-Printerツールに送信する方法はありますか?
これがActivePDFの仕組みです。これは、何を得るかを知っていることを意味し、実際には合理的なスタイリングがありますサポート。
また、さまざまな改ページCSSコマンドを実際にサポートしている(数年前に見たときに)見つけた数少ないパッケージの1つです。
残念ながら、ActivePDFソフトウェアは非常にイライラします。変換のためにIEブラウザーをバックグラウンドで起動する必要があるため、非常に遅くなる可能性があり、特に安定していません。
現在、ベータ版には新しいバージョンがありますが、これははるかに優れているはずですが、実際に試してみる機会がなかったため、どれだけ改善されているかわかりません。
拡張機能付きのヘッドレスFirefoxを使用できます。実行するのはかなり面倒ですが、良い結果が得られます。
詳細については this answer をご覧ください。
質問のサイドバーを見ると、関連する多くの質問が表示されます...
あなたのコンテキストでは、より単純な方法は、 PDFCreator のようなPDF印刷ドライバーをインストールし、この出力にページを印刷することです。
Amyuni WebkitPDF は、JNIでWindows専用ソリューションに使用できます。これはHTMLからPDF/XAMLへの変換ライブラリで、商用および非商用での使用は無料です。
出力ファイルをすぐに必要としない場合、スケーラビリティを高めるために、キューといくつかのバックグラウンドプロセスがそこからアイテムを取得し、それらを変換してデータベースまたはファイルシステムに保存する方がよい場合があります。
通常の免責事項が適用されます