2

使用 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”类型的未处理异常

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

谢谢

4

2 回答 2

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)
于 2017-11-08T14:55:34.653 回答
0

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

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

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

于 2022-01-10T06:37:47.633 回答