添加PdfAnnotation后为什么会出现空引用异常? (iText7)

时间:2017-11-10 14:34:30

标签: c# pdf itext

添加PdfTextMarkupAnnotation时,iText7有一个奇怪的问题。注释本身工作正常,但之后我想插入一个文本表单字段,这是我得到空引用异常。我意识到只有在添加文本表单字段时才会出现 - 其他表单字段也可以正常工作。这是一些示例代码:

private void InsertAnnotation(PdfPage page)
{
    Rectangle rect = new Rectangle(10, 10, 100, 100);
    float[] rectPoints = GetRectanglePoints();
    PdfAnnotation annot = PdfTextMarkupAnnotation.CreateHighLight(rect, rectPoints);

   page.AddAnnotation(annot);
}

之后是文本表单字段:

private void InsertTextBox(PdfPage page)
{   
    Rectangle rect = new Rectangle(50, 50, 50, 50); 
    PdfTextFormField txtField = PdfTextFormField.CreateText(pdfdocument, rect, "some name", "some default value");

    m_AcroForm.AddField(txtField, page);
}

我已经检查了调试器,CreateText()中的每个参数似乎都没问题,但这行引发异常,所以我真的不知道问题是什么。还值得一提的是,当我尝试仅添加文本形式时,它可以正常工作,因此当两个函数一个接一个地工作时会出现问题。任何帮助将不胜感激;)

堆栈追踪:

w iText.Kernel.Pdf.Annot.PdfAnnotation.GetPage()
   w iText.Forms.Fields.PdfFormField.RegenerateField()
   w iText.Forms.Fields.PdfFormField.SetValue(String value, Boolean generateAppearance)
   w iText.Forms.Fields.PdfFormField.SetValue(String value)
   w iText.Forms.Fields.PdfFormField.CreateText(PdfDocument doc, Rectangle rect, String name, String value, PdfFont font, Single fontSize, Boolean multiline)
   w iText.Forms.Fields.PdfFormField.CreateText(PdfDocument doc, Rectangle rect, String name, String value)
   w <class name>.InsertTextBox(PdfPage nPage)
(...)

0 个答案:

没有答案