遇到appearance.setContact(String);
方法问题。
我可以使用我的应用程序使用itext(java)签署pdf文档,但由于某种原因,我的签名没有显示联系信息,我不知道为什么会这样。
appearance.setReason(); appearance.setLocation();
工作得很好,我的签名方法是传递三个字符串的原因,位置和联系但由于某种原因联系人没有显示???
并且一切都设置正确。
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setReason(reason);
appearance.setLocation(location);
appearance.setContact(contact);
appearance.setVisibleSignature(new Rectangle(50, 700, 150, 800), 1, "sig");
appearance.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED);
有没有人有线索?! 感谢
答案 0 :(得分:1)
创建数字签名时,您“填写”/V
条目引用签名字典的签名字段。此签名字典包含许多条目,其中包括原因,位置和联系信息。
使用setReason()
,setLocation()
和setContact()
方法时,这些条目会正确填写。关于/ContactInfo
密钥,ISO-32000-2的草案定义如下:
ContactInfo 签名者提供的信息,以使收件人能够联系 签名者验证签名。如果SubFilter是ETSI.RFC3161,这个 不应使用条目,交互式PDF应忽略该条目 处理器。示例:电话号码。
这是您问题的一个方面:您可以100%确定iText正确创建这些条目。
问题的第二个方面涉及签名的视觉外观,更具体地说是签名的窗口小部件注释的外观。
您可以按照您想要的任何方式创建此外观(请参阅my book about digital signatures的第2.4.2节),但为方便起见,iText还可以创建一个外观,其中包含证书中提到的名称,与位置和签署的原因。这是一个设计选择。我们认为在签名中显示电话号码并不重要。
联系人没有显示的原因是我们认为展示它没有意义。如果您做想要显示它(例如因为它是您的要求的一部分),那么使用自定义代码创建外观应该没有问题。