PDFSharp填写表格字段

问题描述 投票:19回答:6

我想在预制的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(...

c# pdf pdfsharp
6个回答
25
投票

如果您尝试填充PDF表单字段,也需要此,还需要将NeedsAppearances元素设置为true。否则,PDF将“隐藏”表单上的值。这是VB代码。


5
投票

我刚刚经历了与此类似的事情。我打开的第一个pdf文件不包含acroform数据,并且如上所述导致了空异常。问题不在于pdf的开头,而是对值为空的Acroform成员变量的引用。您可以使用以下代码示例测试pdf:


3
投票

我今天一直在努力,已经设法创建了一个可行的解决方案。我在下面粘贴了我的工作代码。我的代码和OP之间唯一真正的区别是:


1
投票

克服NullReferenceException的解决方案是打开您的预制使用Adobe Acrobat的PDF,并通过将其属性类型更改为null以外的其他属性来为表单字段提供默认值。


0
投票

您尝试打开当前目录时是否尝试将其放入其中?


0
投票

今天早些时候,我也遇到了同样的问题。但是,我认为源代码已更新,因此,如果尝试上述方法,将收到NullExceptionError。相反,对于TextField,您需要生成PdfString并使用testfield.Value而不是.text。这是一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.