我如何在iText中改变pdfsignature的矩形样式和默认字段描述?

问题描述 投票:0回答:1

当进行延迟签名时,我在我的pdf中创建了这样一个空签名

    public byte[] emptySignature(String src, String dest, String fieldname)
        throws IOException, GeneralSecurityException, DocumentException {

    PdfReader reader = new PdfReader(src);
    FileOutputStream os = new FileOutputStream(dest);
    PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
    PdfSignatureAppearance appearance = stamper.getSignatureAppearance();

    appearance.setLocation("Office");
    appearance.setReason("For testing");

    Rectangle r = new Rectangle(36, 748, 244, 680);
    r.setBackgroundColor(BaseColor.WHITE);
    r.setBorderColor(BaseColor.RED);
    r.setBorder(1);
    r.setBorder(2);
    r.setBorder(3);
    r.setBorder(4);

    appearance.setVisibleSignature(r, 1, fieldname);

    ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
    MakeSignature.signExternalContainer(appearance, external, 8192);

    byte[] data = IOUtils.toByteArray(appearance.getRangeStream());

    return data;
}

签名后我的pdf有这个印章,默认的文字是 "Digitally signed by...Date: ...Reason: ...Location"。

  1. 我如何改变这个文本?很明显,我可以用setLocation修改Location,但是我怎么能把字段描述和 "Digitally signed "改成别的?
  2. 我可以改变签名矩形的样式吗?在做setVisibleSignature之前,试图将边框和背景颜色设置为矩形,但不成功。

我使用itext 5.5

java pdf itext
1个回答
1
投票

我如何修改这个文本?很明显,我可以用setLocation来修改Location,但是我怎么能把字段描述和 "Digitally signed "改成别的东西呢?

你可以设计完全属于你自己的签名外观,比如说 本回答, 本回答, 本回答以及许多其他。

我可以改变签名矩形的样式吗?在做setVisibleSignature之前,试图将边框和背景颜色设置为矩形,但没有成功。

只有您使用下面的命令设置的矩形的位置和尺寸才会出现。appearance.setVisibleSignature 被使用。自定义外观见上文。

© www.soinside.com 2019 - 2024. All rights reserved.