Itext GenerateAppearances=true;System.NullReferenceException

Itext GenerateAppearances=true;System.NullReferenceException,itext,pdfstamper,Itext,Pdfstamper,使用iTextSharp获得了一些遗留代码 不管如何,所有文档的GenerateAppearances都设置为true。现在它触发了一个异常 取出基本代码并将其放入控制台应用程序中,同样的东西,使用了相同东西的通用PDF() 这是使用版本5.5.12 class Program { static void Main(string[] args) { var reader = new PdfReader(@"C:\Users\me\Desktop\pdf.pdf")

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

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

取出基本代码并将其放入控制台应用程序中,同样的东西,使用了相同东西的通用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;
    }
}
类程序
{
静态void Main(字符串[]参数)
{
var reader=newpdfreader(@“C:\Users\me\Desktop\pdf.pdf”);
var outStream=新内存流();
var压模=新PdfStamper(读卡器,分流);

stamper.AcroFields.generateapearances=true;经过多年的生产,我刚刚将其从:

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

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

                                    stamper.FormFlattening = true;
                                }


定义遗留代码。您是在谈论一个已有几年历史的iTextSharp版本吗?在这种情况下,这个问题可能会因为以下原因而被关闭:“这个问题是由一个无法再复制的问题引起的。”这个例子发生在最新版本-5.5.12上。好的,在这种情况下,您必须将
generateapearances
设置为
true
。您是否检查了
stamper.AcroFields
是否为
null
?如果您处理的文档不是空文档,您会得到
NullReferenceException
,这是正常的AcroForm(在人眼看来它可能像一个形状,但这并不意味着它是一个机器的形状).AcroFields不为null。GenerateAppearances在再次指定true之前均为true。触发异常:System.NullReferenceException.Data:ListDictionaryInternal Count为0我不确定是否理解此更改,但我很高兴看到您能够解决此问题。
                            if (stamper.AcroFields != null && stamper.AcroFields.GenerateAppearances == true)