1

iTextを使用して入力可能なフィールドをPdfPTableに挿入する方法を理解するのに少し時間を費やしました。本を読んだりグーグルで検索したりして、フィールドは直接コンテンツを介して追加する必要があることを知りました。作成中のテーブルの特定のセルにフィールドを追加する必要があるため、これを行うにはセル イベントを使用する必要があります。

私の理解を深めるために、この方法で行う理由は、PdfPCellEvent がテーブル セルの正確な位置を提供する Rectangle を提供するためであることを誰かが確認できることを望んでいましたか?

これが非常に明白に思われる場合はお詫び申し上げます。私の Java の知識は、構造化された方法で学習するのではなく、特定の要件に取り組むことで構築されているため、非常に基本的な概念がいくつか欠けている可能性があります。

4

1 に答える 1

1

PdfPTable / PdfPCellは、PDFのコンテンツストリームに線とテキストを描画します。

フィールドはコンテンツストリームの一部ではありません。フィールドは、ウィジェットの注釈によってページ上で視覚化できる抽象的な概念です。アノテーションはコンテンツストリームの一部ではありません。これらは、(ページのコンテンツストリームに存在するのではなく)ページディクショナリから参照されるPDFディクショナリに格納されます。これらの辞書には、注釈の座標が含まれています。

そのため、セルイベントを使用してフィールドをテーブルに追加する必要があります。テーブルをページに追加すると、iTextはコンテンツストリームを作成します。iTextは、レンダリングが完了するまで、すべての行とテキストスニペットの座標を認識していません。これが、テーブルイベントとセルイベントがトリガーされるときです。イベントに渡された座標を使用して、注釈を作成できます。

于 2013-03-09T11:18:48.053 に答える