iText7中TextFormFieldBuilder不存在?C#示例遇空引用错误求助
解决方案
1. 关于TextFormFieldBuilder类缺失的问题
TextFormFieldBuilder属于iText7的Forms扩展模块,不在核心包中。需要额外安装iText7.Forms NuGet包才能使用该类。
2. 空引用错误的修复
直接调用PdfTextFormField.CreateText时,必须传入字段名称参数,否则AddField方法内部会因字段名缺失触发空引用异常。正确的替代代码如下:
PdfTextFormField field = PdfTextFormField.CreateText(drawContext.GetDocument(), GetOccupiedAreaBBox(), fieldName);
同时需确保GetOccupiedAreaBBox()返回的矩形坐标有效(非空、数值合理),避免因无效区域导致内部错误。
3. 完整修复后的Draw方法示例
public override void Draw(DrawContext drawContext) { // 方案1:使用TextFormFieldBuilder(需安装iText7.Forms包) PdfTextFormField field = new TextFormFieldBuilder(drawContext.GetDocument(), fieldName) .SetWidgetRectangle(GetOccupiedAreaBBox()) .CreateText(); PdfAcroForm.GetAcroForm(drawContext.GetDocument(), true).AddField(field); // 方案2:直接使用CreateText(无需额外包,需传入字段名) // PdfTextFormField field = PdfTextFormField.CreateText(drawContext.GetDocument(), GetOccupiedAreaBBox(), fieldName); // PdfAcroForm.GetAcroForm(drawContext.GetDocument(), true).AddField(field); }
内容的提问来源于stack exchange,提问作者BVernon
相关产品推荐
相关产品推荐

