gpt4 book ai didi

java - 如何使用 iText 复制 AcroForm?

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:20 24 4
gpt4 key购买 nike

我有一个带有 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 的每个"template"页面,设置表单字段,并将其输出添加到一个阅读器中,并将该阅读器添加到 PdfCopyFields。就是这样。在我的测试中,它可以很好地缩放多个页面,最终的 pdf 大小也不错。

关于java - 如何使用 iText 复制 AcroForm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com