关闭压模时出现 Itextsharp 错误 "Unknown Filter: "

Itextsharp error "Unknown Filter: " when closing the stamper

我正在尝试向空白的现有 pdf 添加数字签名,然后使用数字签名创建一个新的 pdf。

这是我的代码:

FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfReader pdfreader = new PdfReader(pdf);
PdfStamper stamper = PdfStamper.CreateSignature(pdfreader, fs, '[=11=]');
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();

压模关闭时出现异常,异常显示"Unknown Filter:" 谁能帮忙? 提前致谢。

你没有告诉 iTextSharp 如何签名:

  • 您不要将其指向要使用的私钥。
  • 您无需告诉它要创建哪种 PDF 签名。

在你的情况下,很可能是后一个问题导致了错误消息,PDF 签名的类型基本上是由过滤器和子过滤器值给出的。

在旧的 iText(Sharp) 版本中,这些值是 PdfSignatureAppearance.SetCrypto 方法和 PdfSignature 构造函数调用的参数。

在当前版本中,这些值在 MakeSignature 辅助方法和 ExternalSignature 实现构造函数中设置。

您可能想阅读 Digital Signatures for PDF documents,Bruno Lowagie(iText 软件)撰写的关于使用 iText 签署 PDF 主题的白皮书。 iTextSharp/C# 个版本的示例代码可以在 iTextSharp sourceforge 存储库中找到。