繁体   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