我有一个单页表单,其中有 2 个字段(命名记录)。我的目标是将其扩展到 50 页,每页有 2 个字段,每个字段在前一个字段号上加 1。例如,第 1 页有记录 1 和 2,第 2 页有记录 3 和 4,依此类推,直到第 50 页有记录 99 和 100。每页上的所有内容都完全相同,除了记录号。有没有一种简单的方法可以做到这一点,而不需要保存单页,复制并合并 50 次,然后用静态数字编辑每个字段?我想将第一个数字放入第一页的第一个字段,并让它自动填充其他 99 个字段。我使用的是 Foxit PDF Editor Pro 12,但我认为如果我使用 Acrobat,解决方案也会相同。
答案1
如果您的编号可能略有不同,则使用模板会更容易:
创建包含区域和字段的单个页面。对于字段,我建议
f1.<fieldname>
对上半部分和f2.<fieldname>
下半部分使用模式。这样,您就已经对每个部分的字段进行了分组。把这个页面变成模板并且隐藏它(这里让它调用tp.
从控制台生成此模板所需记录数量的一半,使用
var myTP = this.getTemplate("tp") ; var recpag = 50 ; // for the example for (var i = 0 ; i < recpag ; 1++) { myTP.spawn(this.numPages, true, false ; }
这将创建 50 页,其中上方字段遵循模式Pxtp.f1.<fieldname>
(其中 x 是页码)。这样,您就有了唯一的字段。
如果不能使用f1
,f2
字段名,您可以创建两个模板,一个带有上部块,另一个带有下部块。要生成,您首先要生成第一个模板,将第三个参数设置为 false,然后生成第二个模板,将第三个参数设置为 true(这会将模板覆盖到已经存在的页面上)。为此,我建议您查看 Acrobat JavaScript 文档。
另一种方法是创建没有字段的模板页面,生成相应的次数,然后使用addField()
Doc Object 方法以编程方式添加字段;另请参阅文档。
答案2
您需要考虑到 PDF 编号从 0 开始,即使第一页在内部被引用为基页 zer0。因此,复制或合并带有字段的 PDF 文件通常存在编号不足的问题。在本例中,我将其编号为记录 0001 和 0002,因此对于带有字段的 5 个重复页面,我们得到每个页面的 #0 - #4。结果是,您在记录 1 中输入的任何内容都将被精确克隆/复制到所有页面的顶部框中,底部字段也是如此。
因此,首先复制所有页面然后向现有页面添加新的数字字段变得更加具有挑战性。
我试图简单地解决这个问题,但对于克隆基页(第 0 页),还有一些需要改进的地方,所以如果你将图像减半并插入它的引用两次并删除所有其他冗余内容,文件将变得明显小。
上面的 5 页示例只有 59,519 字节,应该说是 60 KB,而源文件为 235,494 字节,因此页面数量是其 5 倍,而字节大小大约为 25%。
因此暂时“完整答案”是使用增量数字覆盖该区域。使用 cpdf 之类的工具,可以先将 50 个页面引用添加到由 2 个图像引用组成的第 0 页(或者简单地从模板中删除字段,然后克隆页面)。