使用iText7获取pdf签名

时间:2018-04-20 20:45:41

标签: itext7

我有一个场景,我需要从带有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 个答案:

答案 0 :(得分:4)

抛出异常是因为文档中没有AcroForm而SignatureUtil尝试添加它,但没有关联的PdfWriter

作为一种解决方法,您可以检查文档是否包含AcroForm:

PdfAcroForm.getAcroForm(document, false) != null

如果 AcroForm,则只创建SignatureUtil。如果没有AcroForm,则不会有签名字段。