2016-02-16 36 views
1

我在使用PDFBox 2.0.0-RC3時遇到麻煩,並且在PDF中生成數字簽名字段。PDFBox簽名字段沒有得到很好的認可

這是一段代碼我使用:

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盒可以做到這一點。

非常感謝

+0

@Tilman運還沒有想簽下 – mkl

+0

@mkl哎呀,是的,我完全誤解了。 –

回答

1

補充一點:

widget.setPage(page); 

這臺/ P條目。

現在出現左側面板。我是如何得到這個想法的?我收到了一個空白簽名字段的文檔(來自here),並將其與PDFDebugger進行了比較。

+0

它的工作原理!非常感謝。 – SecretDungeon

+0

有趣。根據ISO 32000-1,這裏的條目是可選的。它可能是在ISO 32000-2的預期中,簽名字段將被要求在文檔中只有一個可視化文件。 – mkl

相關問題