我试图弄清楚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等的值,但只能在签名时填充有意义的值...
答案 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。