我有一个场景,我需要从带有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
答案 0 :(得分:4)
抛出异常是因为文档中没有AcroForm而SignatureUtil
尝试添加它,但没有关联的PdfWriter
。
作为一种解决方法,您可以检查文档是否包含AcroForm:
PdfAcroForm.getAcroForm(document, false) != null
如果有 AcroForm,则只创建SignatureUtil
。如果没有AcroForm,则不会有签名字段。