簡體   English   中英

如何使用iText復制AcroForm?

[英]How to copy an AcroForm using iText?

我有一個帶有acroform的pdf。 我正在使用iText打開此pdf並在表單字段中填入一些數據。 有時我需要生成比原始pdf更多的頁面。 為此,我創建了一個頁面,並使用以下代碼替換現有頁面:

    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);

執行此操作時,現有頁面中的字段不會復制到新頁面。

這是添加新頁面的好方法嗎? (新頁面必須等於現有頁面)

如何將表單字段復制到新頁面? 如何更改新的表單字段名稱,以便不會有重復的字段?

編輯:我要復制的頁面有一個表。 但是這個表只有十行。 如果用戶輸入了十個以上的項目,我想填充整個表格並創建一個新頁面來填充其他項目。

現在我正在制作該頁面的多個副本以避免這種溢出。 但我不認為這是一個優雅的解決方案,它不適用於非常大的輸入。

我使用了PdfCopyFields。 首先,我打開一個新的PdfCopyFields實例並調用SetFullCompression()。 然后我將模板加載到一個字節緩沖區中,對於每個“模板”頁面,我使用PdfStamper,設置表單字段,並將其輸出添加到Reader和讀取器中的PdfCopyFields。 就是這樣。 在我的測試中,它可以很好地縮放多頁,最終的pdf大小也不錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM