当前位置: 首页 > 知识库问答 >
问题:

使用iText7获取pdf签名

司徒茂实
2023-03-14

我有一个场景,我需要用iText7库从pdf中获取签名信息。签名可能存在,也可能不存在。当我为没有任何数字签名的PDF实例化一个新的SignatureUtil对象时,会出现异常

“没有相关的PdfWriter用于进行间接操作。”

.如果有签名,就很好用。我不确定如何纠正这个异常。

更新为包含代码示例

Using reader As New PdfReader(pdfPath),
            pdf As New PdfDocument(reader)

                Dim util As New SignatureUtil(pdf)

                Dim signModel As String = "[Signature: {0} - {1}]"

                For Each signame As String In util.GetSignatureNames()
                    Dim whoisthis As PdfSignature = util.GetSignature(signame)
                    returnVal &= String.Format(
                        signModel,
                        whoisthis.GetName(),
                        whoisthis.GetReason
                        )
                Next

        End Using

共有1个答案

郑乐池
2023-03-14

引发异常是因为文档中没有AcroForm,SignatureUtil试图添加它,但没有关联的PDFWriter

作为解决办法,您可以检查文档是否包含Acroform:

PdfAcroForm.getAcroForm(document, false) != null

并且只有在有acroform的情况下才创建signatureUtil。如果没有AcroForm,就没有签名字段。

 类似资料:
  • 我有一个私人钥匙在档案里。“privatekey.pem”并且不知道如何创建谁能帮助我吗?我正在尝试使用IText7签名pdf。

  • 我需要将一个使用iText5进行PDF签名验证/创建的Java程序移植到iText7。 旧代码显然不能按原样工作,因为iText的大部分内容都经过了重组。 我找到的所有关于如何做到这一点的例子和教程都是针对iText5的。(非常好的)白皮书也是如此。它们依赖于通过方法返回的列表,在该方法上执行所有与签名相关的操作。 在iText7中,不再具有该方法。 有人知道iText7的例子/文档吗?

  • 对于IText5,添加数字签名相当容易。其留档的链接是:http://developers.itextpdf.com/examples/security/digital-signatures-white-paper/digital-signatures-chapter-2 有人可以在ITEXT 7中共享文档链接吗?我试过各种方法,但都没有用。在网上找不到任何链接。我可以取消签名并检查签名,但不能添

  • 我想知道我们如何使用ITEXT7来提取与数字签名相关的图像信息。我知道过去也有人问过类似的问题,但它们大多是围绕ITEXT5提出的,在对软件进行了所有更新和修改后,这与ITEXT7大不相同。

  • 我正在将代码从iText5迁移到iText7,目前我正在努力将一个签名添加到已经包含另一个签名的PDF中。这些签名是用我们的国民身份证(公民卡)进行的。 在iText5中,我使用了PdfStamper,但它在Itext7中丢失了... 这是我目前所掌握的: POReID(https://github.com/POReID/POReID)是用于与智能卡交互的库。 当第一次签署文件时,它工作得很好。再

  • 我正在尝试使用iText7库升级我的代码。以前我使用过iTextSharp库,但看起来iText7是全新的。我尝试阅读pdf文档,但在“未找到pdf标题”之间遇到了一个异常。这是我的密码 我做错了什么?