4

アクロフォーム付きのpdfがあります。iText を使用してこの pdf を開き、フォーム フィールドにデータを入力しています。元の pdf よりも多くのページを生成する必要がある場合があります。そのために、1 つのページを作成し、次のコードを使用して既存のページに置き換えます。

    OutputStream output = new FileOutputStream("C:\\newFile.pdf");
    PdfStamper stamper = PdfHelper.openPdfStamper("C:\\template.pdf", output);
    stamper.insertPage(NEW_PAGE_NUMBER,  new Rectangle(0,0));
    stamper.replacePage(stamper.getReader(), EXISTING_PAGE_NUMBER, NEW_PAGE_NUMBER);

これを行うと、既存のページのフィールドは新しいページにコピーされません。

これは、新しいページを追加する良い方法ですか? (新しいページは既存のページと同じでなければなりません)

フォーム フィールドを新しいページにコピーする方法は? フィールドが重複しないように新しいフォーム フィールド名を変更するにはどうすればよいですか?

編集:コピーしたいページにはテーブルがあります。しかし、このテーブルには 10 行しかありません。ユーザーが 10 個以上の項目を入力した場合、テーブル全体を埋めて、新しいページを作成して他の項目を埋めたいと思います。

このオーバーフローを避けるために、そのページの複数のコピーを作成しています。しかし、これは洗練された解決策ではないと思います。また、非常に大きな入力に対しては機能しません。

4

1 に答える 1

0

これにはPdfCopyFieldsを使用しました。まず、PdfCopyFieldsの新しいインスタンスを開き、SetFullCompression()を呼び出します。次に、テンプレートをバイトバッファーにロードし、「テンプレート」ページごとにPdfStamperを使用してフォームフィールドを設定し、その出力をリーダーに追加し、そのリーダーをPdfCopyFieldsに追加します。それでした。私のテストでは、それは複数のページに対して非常にうまくスケーリングされ、最終的なpdfサイズはまともでした。

于 2009-11-25T00:08:35.793 に答える