数字签名appearance.setContact没有显示

时间:2014-09-01 11:56:48

标签: java itext digital-signature

遇到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);

有没有人有线索?! 感谢

1 个答案:

答案 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还可以创建一个外观,其中包含证书中提到的名称,与位置和签署的原因。这是一个设计选择。我们认为在签名中显示电话号码并不重要。

联系人没有显示的原因是我们认为展示它没有意义。如果您想要显示它(例如因为它是您的要求的一部分),那么使用自定义代码创建外观应该没有问题。