我正在尝试使用 ITextsharp 填写表格,并尝试使用以下代码获取 pdf 中的所有字段:
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循环总是空计数。我已经尝试过 here 中的示例,我需要做些什么来归档自己吗?它工作正常... this is an example of pdf I am trying to fill
有什么想法吗?
编辑::
最佳答案
事实证明,要填写的 PDF“表单”实际上根本不是表单(在 PDF 术语中)。因此,您有两个选择:
您可以使用硬编码或配置的“字段”位置和尺寸直接将文本添加到页面内容,如 @tschmit007 在其回答的评论中所述。
您将实际的 PDF 表单字段添加到您的 PDF 以生成一个真正的 PDF 表单,您将其作为模板以供稍后填写。
您可以使用一些允许这样做的图形工具来添加实际的表单字段,例如Adobe Acrobat,或者您可以使用 iText(Sharp)。看看 iText in Action — 2nd Edition 的第 8 章和可用的 sample here for Java和 here for .Net .
这些示例主要将表单域添加到新生成的 PDF 文档中。但是,您实际上可以使用相同的代码将表单字段添加到 PdfStamper,它使用 Java 中的 stamper.getWriter()
和 stamper.Writer
公开其内部 PdfWriter C#。不过,您必须使用 stamper.addAnnotation(field, page)
而不是 writer.addAnnotation(field)
。
关于c# - 使用 Itextsharp 填写 PDF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498931/