Itext GenerateAppearances=true;System.NullReferenceException
使用iTextSharp获得了一些遗留代码 不管如何,所有文档的GenerateAppearances都设置为true。现在它触发了一个异常 取出基本代码并将其放入控制台应用程序中,同样的东西,使用了相同东西的通用PDF() 这是使用版本5.5.12Itext 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")
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)