虽然Bruno以包含"第2层"的PDF开头解决了这个问题,但请允许我先说明使用这些"签名层"在PDF签名外观是不 PDF规范,规范实际上根本不知道这些层!因此,如果您尝试解析特定图层,则可能找不到这样的图层"或者更糟糕的是,找到一个看起来像那个包含错误数据的图层(一个名为n2的XObject)的东西。
尽管如此,无论您是从第2层查找文本还是从签名外观中查找文本,都可以使用iTextSharp文本提取功能。我使用Bruno的代码作为检索n2图层的基础。
public static void ExtractSignatureTextFromFile(FileInfo file)
{
try
{
Console.Out.Write("File: {0}\n", file);
using (var pdfReader = new PdfReader(file.FullName))
{
AcroFields fields = pdfReader.AcroFields;
foreach (string name in fields.GetSignatureNames())
{
Console.Out.Write(" Signature: {0}\n", name);
iTextSharp.text.pdf.AcroFields.Item item = fields.GetFieldItem(name);
PdfDictionary widget =