C# 用Itextsharp填写PDF表格
我正在尝试使用ITextsharp填写表单,并尝试使用以下代码获取pdf中的所有字段:C# 用Itextsharp填写PDF表格,c#,forms,pdf,itextsharp,fill,C#,Forms,Pdf,Itextsharp,Fill,我正在尝试使用ITextsharp填写表单,并尝试使用以下代码获取pdf中的所有字段: string pdfTemplate = @"c:\Temp\questionnaire.pdf"; PdfReader pdfReader = new PdfReader(pdfTemplate); StringBuilder sb = new StringBuilder(); foreach (var de in pdfRe
string pdfTemplate = @"c:\Temp\questionnaire.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
StringBuilder sb = new StringBuilder();
foreach (var de in pdfReader.AcroFields.Fields)
{
sb.Append(de.Key.ToString() + Environment.NewLine);
}
但是foreach循环总是空计数。我是否需要做一些事情,以文件本身,因为我已经尝试了这个例子,它的作品很好
有什么想法吗
编辑::
试试:
事实证明,要填写的PDF“表格”实际上根本不是表格(PDF格式)。因此,您有两种选择:
这些示例主要将表单字段添加到新生成的PDF文档中。不过,实际上可以使用相同的代码向PdfStamper添加表单字段,该PdfStamper使用Java中的
stamper.getWriter()
和C#中的stamper.Writer
公开其内部PdfWriter。您必须使用stamper.addAnnotation(field,page)
,而不是writer.addAnnotation(field,page)
。@Sam1您的pdf文件不是AcroForm:(.Ypu将在正确的位置插入文本框(即页面中的笛卡尔坐标)在pdf文档中。例如,from这可以工作,但一次只能包含一个页面…如何使整个页面都包含在内?或者如果我可以将其转换为可编辑,因为有大量的框,并且通过定位并不理想
using (FileStream outFile = new FileStream("result.pdf", FileMode.Create)) {
PdfReader pdfReader = new PdfReader("file.pdf");
PdfStamper pdfStamper = new PdfStamper(pdfReader, outFile);
AcroFields fields = pdfStamper.AcroFields;
//rest of the code here
//fields.SetField("n°1", "value");
//...
pdfStamper.Close();
pdfReader.Close();
}