我想在预制的PDF文档中填写表单字段,但是运行时我收到AcroForm的Null Refrence错误。
string fileN4 = TextBox1.Text + " LOG.pdf";
File.Copy(Path.Combine(textBox4.Text + "\\", fileN4),
Path.Combine(Directory.GetCurrentDirectory(), fileN4), true);
// Open the file
PdfDocument document = PdfReader.Open(fileN4, PdfDocumentOpenMode.Modify);
PdfTextField currentField = (PdfTextField)(document.AcroForm.Fields["<CASENUM>"]);
//const
string caseName = TextBox1.Text;
PdfString caseNamePdfStr = new PdfString(caseName);
//set the value of this field
currentField.Value = caseNamePdfStr;
// Save the document...
document.Save(fileN4);
所以PdfTextField currentField = (PdfTextField)(document.AcroForm.Fields["<CASENUM>"]);
是发生错误的地方。它表明AcroForm甚至无法识别字段。
另一种选择是查找并替换PDF中的文本(不使用itextsharp,因为由于许可而无法使用)。>>
任何帮助都会很棒!
我想在预制的PDF文档中填写表单字段,但运行时收到AcroForm的Null Refrence错误。字符串fileN4 = TextBox1.Text +“ LOG.pdf”; File.Copy(Path.Combine(...
如果您尝试填充PDF表单字段,也需要此,还需要将NeedsAppearances元素设置为true。否则,PDF将“隐藏”表单上的值。这是VB代码。
我刚刚经历了与此类似的事情。我打开的第一个pdf文件不包含acroform数据,并且如上所述导致了空异常。问题不在于pdf的开头,而是对值为空的Acroform成员变量的引用。您可以使用以下代码示例测试pdf:
我今天一直在努力,已经设法创建了一个可行的解决方案。我在下面粘贴了我的工作代码。我的代码和OP之间唯一真正的区别是:
克服NullReferenceException
的解决方案是打开您的预制使用Adobe Acrobat的PDF,并通过将其属性类型更改为null
以外的其他属性来为表单字段提供默认值。
您尝试打开当前目录时是否尝试将其放入其中?
今天早些时候,我也遇到了同样的问题。但是,我认为源代码已更新,因此,如果尝试上述方法,将收到NullExceptionError。相反,对于TextField,您需要生成PdfString并使用testfield.Value而不是.text。这是一个例子。