使用Itextsharp填写PDF表格

Zak*_*aki 6 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 pdfReader.AcroFields.Fields)
            {
                sb.Append(de.Key.ToString() + Environment.NewLine);
            }
Run Code Online (Sandbox Code Playgroud)

但foreach循环始终为空计数.我是否需要做一些事情来提交自己,因为我从这里尝试了这个例子并且它工作正常... 这是我试图填写的pdf的一个例子

有任何想法吗?

编辑::

PDF字段的空错误

mkl*_*mkl 6

事实证明,要填写的 PDF“表单”实际上根本不是表单(用 PDF 术语来说)。因此,你有两个选择:

\n\n
    \n
  1. 您可以使用硬编码或配置的“字段”位置和尺寸直接将文本添加到页面内容中,如 @tschmit007 在其答案的评论中所述。

  2. \n
  3. 您将实际的 PDF 表单字段添加到 PDF 中以生成真正的 PDF 表单,您可以将其作为模板稍后填写。

  4. \n
\n\n

您可以使用某些图形工具(例如 Adob​​e Acrobat)添加实际的表单字段,也可以使用 iText(Sharp)。请查看iText in Action \xe2\x80\x94 第二版的第 8 章以及此处针对 Java此处针对 .Net 的示例。

\n\n

这些示例主要将表单字段添加到新生成的 PDF 文档中。不过,实际上您可以使用相同的代码将表单字段添加到 PdfStamper,该 PdfStamper 会stamper.getWriter()在 Java 和stamper.WriterC# 中使用公开其内部 PdfWriter。不过,writer.addAnnotation(field)您必须使用stamper.addAnnotation(field, page)

\n


tsc*_*007 5

尝试:

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();
}
Run Code Online (Sandbox Code Playgroud)