【问题标题】:PDFBox Signature Field not well recognizedPDFBox 签名字段无法很好地识别
【发布时间】:2016-05-28 01:58:01
【问题描述】:

我在使用 PDFBox 2.0.0-RC3 并将数字签名字段生成 PDF 时遇到了麻烦。

这是我使用的一段代码:

public static void main(String[] args) throws IOException, URISyntaxException
{
    PDDocument document;

    document = new PDDocument();

    PDPage page = new PDPage(PDRectangle.A4);

    document.addPage(page);

    PDAcroForm acroForm = new PDAcroForm(document);
    document.getDocumentCatalog().setAcroForm(acroForm);   

    PDSignatureField signatureBox = new PDSignatureField(acroForm);

    signatureBox.setPartialName("ENSGN-MY_SIGNATURE_FIELD-001");

    acroForm.getFields().add(signatureBox);

    PDAnnotationWidget widget = signatureBox.getWidgets().get(0);
    PDRectangle rect = new PDRectangle();
    rect.setLowerLeftX(50);
    rect.setLowerLeftY(750);
    rect.setUpperRightX(250);
    rect.setUpperRightY(800);
    widget.setRectangle(rect);

    page.getAnnotations().add(widget);

    try {

        document.save("/tmp/mySignatureFieldGEN_PDFBOX.pdf");
        document.close();

    } catch (Exception io) {

        System.out.println(io);

    }        
}

代码生成一个 pdf 文档,我用 Acrobat Reader 打开它,结果如下:

PDF BOX Generated

如您所见,左侧的签名面板是无效的,但左侧的签名字段存在并且有效。

我使用 PDFTron 生成相同的 PDF。结果如下:

PDF Tron Generated

在这种情况下,左侧的签名面板正确显示了签名字段的存在。

我想获得第二种情况(正确),但我不明白为什么 PDF Box 可以做到这一点。

非常感谢

【问题讨论】:

  • @Tilman 操作人员还不想签名
  • @mkl 哎呀,是的,我完全误解了。

标签: pdf pdf-generation pdfbox


【解决方案1】:

添加这个:

widget.setPage(page);

这会设置 /P 条目。

现在左边的面板出现了。我是怎么想到的?我得到了一个签名字段如此空的文档(来自here),并与您的PDFDebugger进行了比较。

【讨论】:

  • 有趣。根据 ISO 32000-1,此处输入是可选的。 ISO 32000-2 可能要求签名字段在文档中的可视化不超过一个。
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多