PDFBox签名字段未得到广泛认可

时间:2016-02-16 16:57:05

标签: pdf pdf-generation pdfbox

我在使用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可以做到这一点。

非常感谢

1 个答案:

答案 0 :(得分:1)

添加:

widget.setPage(page);

设置/ P条目。

现在左边的面板出现了。我是怎么得到这个主意的?我收到了一个带有这样一个空签名字段的文档(来自here),并将其与您的PDFDebugger进行比较。