PDFBox:签名时引用现有签名(字段)

时间:2016-10-07 13:46:58

标签: java pdfbox

我试图弄清楚PDFBox是否支持签署现有(emtpy)签名表单字段。我检查了提供的examples但是所有似乎只添加了新字段。 OP还有另一个post

  

"预先存在的签名字段不受pdfbox影响为pdfbox   似乎无法引用它们。"

然而,这是一年前编写的,签名功能似乎有一些effort。 所以有人能告诉我是否有可能(如果是这样的话)引用现有的签名字段?或者可能是有计划的?

更新 我按照您的建议实现了以下功能:

PDDocumentCatalog docCatalog = doc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("exampleSignature");
PDSignature signature = ((PDSignatureField)field).getSignature();

然而签名总是null。检查PDF规范后,它完全有意义,因为空签名字段永远不会设置签名字典。添加签名词典时,例如必须填写过滤器,内容,ByteRange等的值,但只能在签名时填充有意义的值...

1 个答案:

答案 0 :(得分:1)

从2.0.4开始,但已经在snapshot builds中,可以签署现有(空)签名表单字段。 (它不适用于2.0.3,即使您使用即将发布的2.0.4中的更新代码示例,因为库代码有几个已修复的错误)。可以找到示例代码here。示例代码中有两件事是新的:

  • visibleSignatureProperties.buildSignature();已被移动
  • 已添加电话signature = findExistingSignature(doc, "Signature1");

这样做的目的是搜索名为" Signature1"的签名字段,如果找到,则创建签名字典(/V组件)。由于此签名对象已传递给doc.addSignature()调用,因此PDFBox将能够检测到父字段已存在且无法创建新字段。

更多详细信息,请参阅PDFBOX-3525