我正在使用iText进行pdf签名,我在设置它的外观方面遇到了问题。
我想将签名字段拆分为两部分。在左侧应该是用于签署大写字母的证书的CN。在右侧应该是日期和其他一些其他信息,包括原始格式的CN。背景是图像。
现在我正在使用NAME_AND_DESCRIPTION呈现模式,该模式将签名字段分为两部分。它完全符合我的要求,但iText会自动从证书中取出原始CN并将其打印为NAME(在左侧)。
有没有办法改变NAME部分(我需要用大写字母表示CN)。或者是否有其他方法将签名字段拆分为2部分并手动设置文本?
这是我到目前为止所拥有的: 设置背景和渲染模式:
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setImage(Image.getInstance("image.gif"));
appearance.setReason("I've written this.");
appearance.setVisibleSignature(new Rectangle(420, 732, 512, 780), 1, 1);
appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.NAME_AND_DESCRIPTION);
设置说明(右侧):
X500Name x500name = new JcaX509CertificateHolder(x509Certificate).getSubject();
RDN cn = x500name.getRDNs(BCStyle.CN)[0];
String cnName = IETFUtils.valueToString(cn.getFirst().getValue());
appearance.setLayer2Text("Digitally signed by:" + cnName + "\n\n" + x509Certificate.getSubjectDN().getName() + "\n\n" + new Date().toString());