java - 数字签名外观.setContact 未显示

标签 java itext digital-signature

appearance.setContact(String); 方法出现问题。 我可以使用 itext (java) 使用我的应用程序签署 pdf 文档,但由于某种原因,我的签名没有显示联系信息,我不知道为什么会这样。

外观.setReason(); 外观.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);

有人知道吗? 谢谢

最佳答案

创建数字签名时,您“填写”签名字段,其中的 /V 条目引用签名字典。该签名字典包含多个条目,其中包括签名原因、地点和联系信息。

当您使用 setReason()setLocation()setContact() 方法时,这些条目将正确填写。关于/ContactInfo键,ISO-32000-2草案是这样定义的:

ContactInfo Information provided by the signer to enable a recipient to contact the signer to verify the signature. If SubFilter is ETSI.RFC3161, this entry should not be used and should be ignored by a interactive PDF processor. EXAMPLE: A phone number.

这是您问题的一个方面:您可以 100% 确定 iText 正确创建了这些条目。

您问题的第二个方面涉及签名的视觉外观,更具体地说是签名的小部件注释的外观。

您可以以任何您想要的方式创建此外观(请参阅 my book about digital signatures 的第 2.4.2 节),但为了方便起见,iText 还可以创建一个采用证书中提到的名称以及地点和签字原因。这是一个设计选择。我们认为在签名中显示电话号码并不重要。

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

关于java - 数字签名外观.setContact 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605351/

相关文章:

digital-signature - 数字签名和数字证书有什么区别?

java - 如何在单击 JLabel 时获取其变量名称

java - 上线前遗失元素

c# - 切换文档渲染器 - 无法在已刷新的页面上绘制元素

c# - 想要在 itextSharp 的最后一页上删除页脚

macos - 什么类型的文件可以在 Mac 上使用 codesign 进行签名?

java - 从 Java 访问 Javascript

java - 配置 Java MongoClient 以使用 X.509 证书进行身份验证

c# - 将参数传递给重写的 OnEndPage 方法

c++ - 使用 OpenSSL 进行签名验证