4

Java で iText と Apache Velocity テンプレート ファイル (.vm) を使用して PDF を生成する一般的なワークフローは何ですか?

テンプレートファイルの解析、Javaオブジェクトのコンテキストへの配置、pdfを生成するために実行する手順などの手順を知りたいです。

私はこれが非常に基本的な質問であることを知っています. しかし、このタイプの例を Web 上で 1 つも見つけることができません。XDocReportを見つけましたが、他の選択肢も知りたいです。

サンプルプロジェクトのリンク、または少なくとも開始するための手順を教えてください。

4

3 に答える 3

4

Java で iText と Apache Velocity テンプレート ファイル (.vm) を直接使用して PDF を生成することは、次の理由により不可能です。

  • PDFはバイナリ形式で、
  • Velocity は、プレーン テキスト コンテンツを生成します。

つまり、Velocity は PDF を生成できません。

XDocReport は、一部の Velocity/Freemarker 構文を含む docx/odt テンプレートを Java コンテキストとマージすることにより、docx/odt レポートを生成できます。生成された docx/odt レポートは、pdf/xhtml に変換できます。

docx/odt は複数の xml エントリを含む zip であるため、機能します。docx を解凍すると、word/document.xml が表示されます。このエントリには、MS Word で入力した内容が表示されます。word/document.xml はプレーン テキストなので、この場合は Velocity を使用できます。

ここでは、Velocity を使用する docx テンプレートから pdf を生成する XDocReport プロセスを示します。

  1. docx テンプレートを読み込みます。このステップでは、docx を解凍し、各 xml エントリ (名前エントリをキーとして、バイト配列を値として) をマップに格納します。たとえば、map には、word/document.xml を持つキーと、このエントリの xml コンテンツが値として含まれています。
  2. Java コンテキストとマージする必要がある XML エントリごとにループします。たとえば、Word/document.xml は Velocity を使用して Java コンテキストとマージされ、マージの結果はマップの word/document.xml 値を置き換えます。
  3. マップの各エントリを圧縮して、新しい docx を再構築します。

このステップで、生成された docx (レポート) ができました。

別の形式に変換するために、XDocReport は Apache POI と iText に基づく docx-to-pdf コンバーターを提供します。docx を pdf に変換する XDocReport プロセスは次のとおりです。

  1. Apache POI で docx を読み込む
  2. POIの構造体(XWPFParagraphなど)ごとにループし、iText構造体(iText Paragraph)を作成します。

XDocReport はモジュール式であり、他のコンバーターも使用できることに注意してください。

于 2014-02-18T21:55:46.863 に答える