【问题标题】:GenerateAppearances = true; System.NullReferenceException生成外观=真; System.NullReferenceException
【发布时间】:2018-04-21 03:12:48
【问题描述】:

使用 iTextSharp 获得了一些遗留代码。

无论如何,所有文档都将 GenerateAppearances 设置为 true。现在它触发了一个异常。

取出基本代码并将其放入控制台应用程序中,同样的,使用网络相同的通用 PDF (http://www.pdf995.com/samples/pdf.pdf)。

这是使用版本 5.5.12

class Program
{
    static void Main(string[] args)
    {
        var reader = new PdfReader(@"C:\Users\me\Desktop\pdf.pdf"); 

        var outStream = new MemoryStream();
        var stamper = new PdfStamper(reader, outStream);

        stamper.AcroFields.GenerateAppearances = true; <--- usually true before setting
        stamper.FormFlattening = true;
    }
}

itextsharp.dll 中出现“System.NullReferenceException”类型的未处理异常

附加信息:对象引用未设置为对象的实例。

谢谢

【问题讨论】:

  • 定义遗留代码。您是在谈论几年前的 iTextSharp 版本吗?在这种情况下,由于以下原因,该问题可能会被关闭:“此问题是由无法再重现的问题引起的。”
  • 这个例子发生在最新版本 - 5.5.12。
  • 好的,在这种情况下,我很惊讶您必须将GenerateAppearances 设置为true。你检查过stamper.AcroFields 不是null 吗?如果您处理不是 AcroForm 的文档(在人眼看来,它可能看起来像一个表格,但这并不意味着它是一个机器的表格),您会收到 NullReferenceException 是正常的。跨度>
  • AcroFields 不为空。在再次分配 true 之前,GenerateAppearances 全部为 true。触发异常:System.NullReferenceException.Data: ListDictionaryInternal Count is 0

标签: itext pdfstamper


【解决方案1】:

经过多年的制作,我只是将其更改为:

if (stamper.AcroFields != null)
{
    f.GenerateAppearances = true;

    foreach(var field in f.Fields)
    {
        f.SetField(field.Key, f.GetField(field.Key));
    }

    stamper.FormFlattening = true;
}

if (stamper.AcroFields != null && stamper.AcroFields.GenerateAppearances == true)

【讨论】:

  • 我不确定我是否理解更改,但很高兴看到您能够解决问题。
【解决方案2】:

我遇到以下相同的问题: 当我设置 AcroFields.GenerateAppearances = true itextsharp.dll 中出现“System.NullReferenceException”类型的未处理异常 附加信息:对象引用未设置为对象的实例。

我调试了这段代码,发现 AcroFields 不为空。但 NullReferenceException 仍然发生。

经过调查,我发现PDF文件的格式是aspose xfa而不是acroforms。 所以我通过将 PDF 的格式从 aspose xfa 转换为 acroforms 解决了这个问题。

【讨论】:

  • aspose xfa”是什么意思? XFA 是一种半专有的 Adobe 格式...
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2013-10-06
相关资源
最近更新 更多