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/