添加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)
(...)