如何使用iText设置签名的外观?

时间:2014-11-03 11:36:17

标签: java itext signing

我正在使用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());

0 个答案:

没有答案