使用IText 7将数字签名添加到PDF

kz2*_*014 3 itext itext7

对于IText 5,添加数字签名非常容易。其文档的链接为:http : //developers.itextpdf.com/examples/security/digital-signatures-white-paper/digital-signatures-chapter-2

有人可以在ITEXT 7中共享指向文档的链接吗?我尝试了各种方法都无济于事。找不到在线任何链接。我可以取消签名并检查签名,但是无法添加。

mkl*_*mkl 6

可以在iText 7 Java签名示例github存储库测试源包com.itextpdf.samples.signatures中找到到iText 7的Digital 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);
}
Run Code Online (Sandbox Code Playgroud)

  • @Banzragch.B *“是否可以使用公钥向 pdf 添加签名”* - 这没有任何意义,不是吗?这样的签名旨在确保特定的人应用它,而不是其他人。因此,它必须使用一些“私有”数据生成,而不仅仅是公钥。 (2认同)