2016-12-15 292 views
0

对于IText 5,添加数字签名相当容易。 的链接,它的文档是: http://developers.itextpdf.com/examples/security/digital-signatures-white-paper/digital-signatures-chapter-2使用IText将数字签名添加到PDF 7

有人可以分享的链接文档中iText的7这样做? 我尝试过各种方法无济于事。在线找不到任何链接。我可以签名并检查签名,但不能添加它。

+0

你有没有看看[iText的7 Java范例的GitHub库(https://github.com/itext/i7js-samples)?在子文件夹[/publications/signatures/](https://github.com/itext/i7js-samples/tree/develop/publications/signatures)中,它包含了移植到iText 7的白皮书示例。 – mkl

+0

非常感谢。如果你可以在下面写出答案,那么请将它标记为:) –

回答

2

数字签名的端口对于iText 7的白皮书代码示例可以在iText 7 Java samples github repository子文件夹/publications/signatures/(例如)中找到。从简单C2_01_SignHelloWorld示例节选:

public void sign(String src, String dest, 
       Certificate[] chain, 
       PrivateKey pk, String digestAlgorithm, String provider, 
       PdfSigner.CryptoStandard subfilter, 
       String reason, String location) 
     throws GeneralSecurityException, IOException { 
    // Creating the reader and the signer 
    PdfReader reader = new PdfReader(src); 
    PdfSigner signer = new PdfSigner(reader, new FileOutputStream(dest), false); 
    // Creating the appearance 
    PdfSignatureAppearance appearance = signer.getSignatureAppearance() 
      .setReason(reason) 
      .setLocation(location) 
      .setReuseAppearance(false); 
    Rectangle rect = new Rectangle(36, 648, 200, 100); 
    appearance 
      .setPageRect(rect) 
      .setPageNumber(1); 
    signer.setFieldName("sig"); 
    // Creating the signature 
    IExternalSignature pks = new PrivateKeySignature(pk, digestAlgorithm, provider); 
    IExternalDigest digest = new BouncyCastleDigest(); 
    signer.signDetached(digest, pks, chain, null, null, null, 0, subfilter); 
}