使用 iText7 获取 pdf 签名
Getting pdf signatures with iText7
我有一个场景需要使用 iText7 库从 pdf 中获取签名信息。签名可能存在也可能不存在。当我为没有任何数字签名的 PDF 实例化一个新的 SignatureUtil
对象时,出现异常
"There is no associate PdfWriter for making indirects."
。如果有签名,它就可以正常工作。我不确定如何更正此异常。
已更新以包含代码示例
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
异常抛出是因为文档中没有AcroForm,SignatureUtil
尝试添加,但是没有关联PdfWriter
.
作为解决方法,您可以检查文档是否包含 AcroForm:
PdfAcroForm.getAcroForm(document, false) != null
只有在 有 AcroForm 时才创建 SignatureUtil
。如果没有 AcroForm,将没有签名字段。
我有一个场景需要使用 iText7 库从 pdf 中获取签名信息。签名可能存在也可能不存在。当我为没有任何数字签名的 PDF 实例化一个新的 SignatureUtil
对象时,出现异常
"There is no associate PdfWriter for making indirects."
。如果有签名,它就可以正常工作。我不确定如何更正此异常。
已更新以包含代码示例
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
异常抛出是因为文档中没有AcroForm,SignatureUtil
尝试添加,但是没有关联PdfWriter
.
作为解决方法,您可以检查文档是否包含 AcroForm:
PdfAcroForm.getAcroForm(document, false) != null
只有在 有 AcroForm 时才创建 SignatureUtil
。如果没有 AcroForm,将没有签名字段。