我正在尝试将数字签名添加到空白的现有pdf中,然后用它创建一个带有数字签名的新pdf。
这是我的代码:
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfReader pdfreader = new PdfReader(pdf);
PdfStamper stamper = PdfStamper.CreateSignature(pdfreader, fs, '\0');
stamper.Writer.CloseStream = false;
StringBuilder sb = new StringBuilder();
sb.AppendLine("SIGNATURE");
PdfSignatureAppearance sap = stamper.SignatureAppearance;
sap.SignDate = DateTime.Now;
sap.Acro6Layers = true;
Font signatureFont = new Font();
signatureFont.Size = 10;
sap.Layer2Text = sb.ToString();
sap.Layer2Font = signatureFont;
stamper.Close();
pdfreader.Close();
fs.Close();
压模关闭时出现异常,例外情况为“未知过滤器:” 有人可以帮忙吗? 提前谢谢。
答案 0 :(得分:0)
您不会告诉iTextSharp如何签名:
在您的情况下,后一个问题很可能导致错误消息,PDF签名的类型基本上由过滤器和子过滤器值给出。
在旧的iText(夏普)版本中,这些值是PdfSignatureAppearance.SetCrypto
方法和PdfSignature
构造函数调用的参数。
在当前版本中,这些值在MakeSignature
辅助方法和ExternalSignature
实现构造函数中设置。
您可能想阅读Digital Signatures for PDF documents,Bruno Lowagie(iText软件)的白皮书,主题是使用iText签署PDF。可以在iTextSharp sourceforge存储库中找到示例代码的iTextSharp / C#版本。