0

我必须创建一个 PDF 文件,在其中使用 PDFmake 来实现这一点。但是 PDFmake 没有在文档中添加签名字段的功能。

因此,我打开了一个带有签名字段的示例 PDF,并复制了包含签名字段名称的对象:

2 0 obj
<</F 4/Type/Annot/Subtype/Widget/Rect[294 465 470 420]/FT/Sig/DA(/Helv 0 Tf 0 g)/T(Signature2)/P 2 0 R>>
endobj

当我将它粘贴到新文档中时,它会显示 Rect 但一旦我单击它,就会出现错误“无法签署文档”。(粗略翻译)点击示例 PDF 文件中的签名框会触发签名过程。

现在,我的问题是,我在新文档中遗漏了什么?

4

1 回答 1

0
2 0 obj
<</F 4/Type/Annot/Subtype/Widget/Rect[294 465 470 420]/FT/Sig/DA(/Helv 0 Tf 0 g)/T(Signature2)/P 2 0 R>>
endobj

最后一个条目/P 2 0 R不合适:P的值应该是对与此注释关联的页面对象的间接引用。但显然 field 对象本身是 object 2 0,显然不是page 对象。

因此,将P值更改为指向相关页面对象。或者完全放弃它,对于表单字段小部件注释,它是可选的。

您可能考虑或尚未考虑的其他细节:

  • 该字段没有条目。因此,它是一个根字段。因此,它必须添加到AcroForm字典中的Fields数组中。
  • 该字段与其小部件注释合并。作为小部件注释,它应从其页面的Annots数组中引用。
  • 该字段名为“Signature2”。因此,请确保您的 PDF 中没有其他具有该名称的表单域。

您谈到在文档之间复制和粘贴 PDF 对象。如果您的意思是在文本编辑器中复制和粘贴,请务必小心!确保您的编辑器可以处理任意文件内容(甚至是非文本内容)并且不会损坏它们。并且绝对更新交叉引用表或流以匹配您的编辑所影响的偏移量更改。

于 2019-05-08T17:04:56.393 回答