【问题标题】:How to manage a PDF digital signature's display?如何管理 PDF 数字签名的显示?
【发布时间】:2015-03-22 15:00:44
【问题描述】:

我正在使用 iText 库来签署我的 PDF 文档。
我想知道 PdfStamper 中是否有任何方法可以管理外观的显示:一层中的签名信息和另一层中的图像,它们现在位于同一层中:

解决方案:

            PdfStamper pdfStamper;
            pdfStamper = PdfStamper.createSignature(pdfReader, null, '\0',
                        outputFile);

            // appearance
            PdfSignatureAppearance appearance = pdfStamper
                        .getSignatureAppearance();
            appearance .setReason("Test");
            appearance .setLocation("Location");                                                                                                                                 
            appearance .setSignatureGraphic(Image.getInstance(RESOURCE)); 
            appearance.setRenderingMode(RenderingMode.GRAPHIC_AND_DESCRIPTION); appearance.setVisibleSignature(new Rectangle(420, 732, 512, 780), 1,"sign");

参考这个有趣的book,我现在可以创建描述和图形两个区域。

【问题讨论】:

    标签: pdf certificate itext digital-signature pdfstamper


    【解决方案1】:

    请阅读Digital Signatures for PDF documents,第 2.4 节“创建不同的签名外观”。您将了解层 n0 到 n4,并发现自 2003 年以来不再推荐使用层 n1、n3 和 n4(换句话说:不要使用它们)。

    你可以像这样使用n0层,称为背景层:

    PdfTemplate n0 = appearance.getLayer(0);
    float x = n0.getBoundingBox().getLeft();
    float y = n0.getBoundingBox().getBottom();
    float width = n0.getBoundingBox().getWidth();
    float height = n0.getBoundingBox().getHeight();
    n0.setColorFill(BaseColor.LIGHT_GRAY);
    n0.rectangle(x, y, width, height);
    n0.fill();
    

    这只是书中的一个简单示例,绘制了一个浅灰色矩形。

    你可以像这样使用n2层:

    PdfTemplate n2 = appearance.getLayer(2);
    ColumnText ct = new ColumnText(n2);
    ct.setSimpleColumn(n2.getBoundingBox());
    Paragraph p = new Paragraph("This document was signed by Bruno Specimen.");
    ct.addElement(p);
    ct.go();
    

    如果“画文字”太难,还可以使用方便的方法,比如:

    appearance.setLayer2Text("This document was signed by Bruno Specimen");
    appearance.setLayer2Font(new Font(FontFamily.TIMES_ROMAN));
    

    本书的例子可以在SourceForge上找到。

    使用上述方法,正在“艰难地”创造外观。也有不同的方式让 iText 完成这项工作:

    【讨论】:

    • 谢谢Lowagie先生,其实目的就是为了得到这样的签名显示:oi59.tinypic.com/2418k03.jpg
    • 这不是你的问题,但幸运的是,这也包含在我在回答中提到的书中。
    • Lowagie 先生非常有帮助,谢谢!
    • 您好@Lowagie 先生,我想知道如何使数字签名有效,无论使用何种计算机。有什么要求吗?
    • @Angelika 要求每台计算机都有一个支持数字签名的查看器,例如Adobe 阅读器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多