5

Java / Java EEベースのアプリケーションがあり、ユーザーに提供されるさまざまなサービスのPDF証明書を作成する必要があります。PDFを作成する方法を探しています(今のところデジタル証明書は必要ありません)。

それを行う最も簡単で便利な方法は何ですか?私が試してみました

  1. XSLからPDFへの変換
  2. itextを使用したHTMLからPDFへの変換。
  3. 大まかなJavaの方法(PDFWriter、PdfPCellなどを使用)

これらからの最良の方法は何ですか、またはより簡単で便利な他の方法はありますか?

4

7 に答える 7

11

証明書について話すとき、私は、以下を除いて、証明書のすべての受信者に対して同一に見える標準シートを思い浮かべます。

  • 受信者の名前
  • 受信者がたどったコース
  • デート

この場合、豪華な証明書(Acrobat、Open Office、Adobe InDesignなど)を作成し、次の3つのフィールドを含む静的フォーム(AcroFormと呼ばれることもあります)を作成できるツールを使用します。 、コース、日付。

次に、iTextを使用して次のようなフィールドに入力します。

PdfReader reader = new PdfReader(pathToCertificateTemplate);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(pathToCertificate));
AcroFields form = stamper.getAcroFields();
form.setField("name", name);
form.setField("course", course);
form.setField("date", date);
stamper.setFormFlattening(true);
stamper.close();
reader.close();

コードからそのような証明書を作成することは「難しい方法」です。XMLからこのような証明書を作成するのは「面倒」です(XMLはレイアウトの定義に適していないため)。iTextのXMLワーカーでは(HTML + CSS)から証明書を作成できますが、これらのソリューションにはすべて欠点があります。すべてのアイテムを正しく配置したり、すべてが同じページに収まるようにするのは大変な作業です...

固定フィールドを持つテンプレートを維持する方がはるかに簡単です。このように、あなたは一度だけコーディングする必要があります。何らかの理由でフィールドを別の場所に移動したい場合は、テンプレートを変更するだけで済みます。コード、XML、HTML、またはCSSをいじくり回す必要はありません。

詳細については、 http://www.manning.com/lowagie2/samplechapter6.pdfを参照してください(セクション6.3.5)。

于 2013-01-04T09:27:30.643 に答える
1

最初の方法をお勧めします。最も強力なXSLからPDFへの変換です。私はApacheFOPを使用して多くのPDFレポート(それぞれ数千ページ)を優雅に作成した経験がありますが、それで十分でかなり簡単だと思います(ただし、xsl-FOの知識が必要です)。

于 2013-01-04T05:12:04.787 に答える
1

JasperReportsmateを使用してみてください。http://community.jaspersoft.com/でチェックしてください

于 2013-01-04T05:08:22.493 に答える
1

これは古い質問ですが、答えるべきだと思います。

証明書、レポート、支払い伝票などの非常に複雑なpdfを作成するため。DynamicReportsライブラリを確実に使用できます。このライブラリはjasperレポートに依存しています(これも非常に人気があり、古いライブラリです)。動的レポートを使用すると、必要に応じて簡単に操作または変更できるように、Javaコードを使用してドキュメントを設計できます。

彼らのサイトにはたくさんの例があり、それらの例から非常に簡単に学ぶことができます。

以下はそれへのリンクです:

http://www.dynamicreports.org/

于 2017-09-18T12:39:53.500 に答える
1

Bruno Lowagieは、基本的にすべてのデータで同じであり、データを入力する必要があるテンプレートを生成するための優れた方法を指摘しました。ただし、Bruno Lowagieは、フィールドにデータを入力するためのライブラリとしてiTextを推奨しています。Ankitのように私にとって、このライセンスは私が別のライブラリを選択しなければならなかった理由の問題でした。以下に、Apaches PdfBoxを使用してテンプレートを作成し、データを入力する方法のステップバイステップガイドがあります。

    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.16</version>
    </dependency>
  1. LibreOfficeWriterでテンプレートを作成します。プレースホルダーの場合は、TextBoxを使用します([表示]>>[ツールバー]>>[フォームコントロール])。これにより、BrunoLowagieによって提案されたAcroFormsを含むPDFが作成されます

  2. 各テキストボックスの名前を設定します。読み取り専用をtrueに設定します。

  3. ドキュメントをPDFとして保存します。

  4. PdfBoxでPDFテンプレートを読み、テキストボックスの値を設定します。

    InputStream is = getClass().getClassLoader().getResourceAsStream("Template.pdf");
    
    try {
        PDDocument pDDocument = PDDocument.load(is);
        PDAcroForm pDAcroForm = pDDocument.getDocumentCatalog().getAcroForm();
    
        PDField fieldName = pDAcroForm.getField("name");
        fieldName.setValue("FirstName Surname"); // <-- Replacement
    
        pDDocument.save(outStream);
        pDDocument.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
于 2020-11-07T10:56:56.317 に答える
0

PDFを作成するためにiTextpdfライブラリを使用します。そのAPIからPDFを生成するのは簡単です。ここにリンクがあります

http://itextpdf.com/

Text®は、PDFドキュメントを作成および操作できるライブラリです。これにより、動的なPDFドキュメントの生成や操作でWebおよびその他のアプリケーションを強化しようとしている開発者が可能になります。

開発者はiTextを使用して次のことができます。

PDFをブラウザに提供する

XMLファイルまたはデータベースから動的ドキュメントを生成する

PDFの多くのインタラクティブ機能を使用する

ブックマーク、ページ番号、透かしなどを追加します。

PDFページを分割、連結、および操作する

PDFフォームへの入力を自動化

PDFファイルにデジタル署名を追加する

于 2013-01-04T05:08:16.917 に答える
0

PDFは複雑になる可能性があるとおっしゃいました。これが変動性またはレイアウトに関係している場合、適度に洗練されたテンプレートベースのレイアウトとコントロールを提供する1つのオプションはDocmosisです。Docmosisにdocまたはodtファイルをテンプレートとして提供するので、それらは非常に簡単に変更でき、Docmosisを呼び出してメールマージしてpdfまたは他の形式を作成します。Docmosisを作った会社で働いてはいけません。

お役に立てば幸いです。

于 2013-02-26T00:20:22.337 に答える