首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PDFTron数字签名

PDFTron数字签名
EN

Stack Overflow用户
提问于 2022-01-19 09:08:48
回答 1查看 390关注 0票数 1

我目前正在用Python开发一个数字签名项目,它可以在PDF文档上创建数字签名并对其进行验证。我能够使用以下代码向PDF文件中添加一个数字签名:

代码语言:javascript
运行
复制
PDFNet.Initialize()
doc = PDFDoc(pdf_path)
page1 = doc.GetPage(1)

# Create signature field
sign_field = doc.CreateDigitalSignatureField("Signature")
widgetAnnot = SignatureWidget.Create(doc, Rect(0, 0, 100, 100), sign_field)
page1.AnnotPushBack(widgetAnnot)
sign_field.SignOnNextSave(pkcs12_path, "")
# Save file
output_path = get_only_path(pdf_path) + "output.pdf"
doc.Save(output_path, SDFDoc.e_incremental)

PDFNet.Terminate()

我还能够用以下代码验证文档:

代码语言:javascript
运行
复制
    # Get certificate
    dsfield_iter = doc.GetDigitalSignatureFieldIterator()
    while dsfield_iter.HasNext():
        sign_field = dsfield_iter.Current()
        cert = sign_field.GetSignerCertFromCMS()
        dsfield_iter.Next()
    
    # Save certificate for verification
    cert_path = get_only_path(pdf_path) + "certificate.cer"
    with open(cert_path, "wb") as cer:
        # cert.GetData() return DER format
        cer.write(cert.GetData())

    # Verifying signature
    opts = VerificationOptions(VerificationOptions.e_compatibility_and_archiving)
    opts.AddTrustedCertificate(cert_path)
    result = doc.VerifySignedDigitalSignatures(opts)

不过,我有个问题。我希望多个人能够在同一文档上签名,并在不同的签名字段中使用自己签名的证书进行签名,同时也能够验证该文档。我在同一个过程中使用了我的代码,但是在不止一个人在上面签名之后,我无法验证签名。我想在这方面寻求帮助,请分享你的想法:

EN

回答 1

Stack Overflow用户

发布于 2022-01-20 19:17:39

是的,您可以添加多个签名字段并使用PDFTron SDK对它们进行签名。只需重复上面的SignOnNextSave代码,始终确保使用e_incremental保存。

注意,如果添加了两个或多个签名,当前的PDFTron验证将失败,因为这将严格违反PDF规范描述的默认行为。尽管我至少向Acrobat查询过,而且2+签名也很好,但至少Acrobat似乎在做一些专有的、不符合标准的事情。我不能说其他供应商,如果这对你来说很重要的话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70767892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档