【发布时间】: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