如何创建和填写 PDF 表单

How to create and fill out a PDF form

问题背景:我有时会在 paper/word document.pdf 文档模板中得到包含控件(文本框、复选框)的不同类型的模板。

现在我必须在提供的模板中分配值,并将其保存为 pdf 文档。

所以我发现了一些对模板化有用的东西,叫做 Openoffice,我可以从那里添加控件并保存为 pdf 模板文档。

现在该模板需要赋值,为此找到一个名为 iTextSharp 的 dll。

根据我尝试添加时的示例,pdf 模板中的字段数显示为 0。有人可以帮我为 PDF 模板分配值吗? 下面是我在这种情况下使用的代码。

   private void ListFieldNames()
        {
            string pdfTemplate = @"D:.pdf";
            loadPDF(pdfTemplate);


            // title the form
            //this.Text += " - " + pdfTemplate;

            // create a new PDF reader based on the PDF template document
            PdfReader pdfReader = new PdfReader(pdfTemplate);

            // create and populate a string builder with each of the
            // field names available in the subject PDF
            StringBuilder sb = new StringBuilder();
            foreach (DictionaryEntry de in pdfReader.AcroFields.Fields)
            {
                sb.Append(de.Key.ToString() + Environment.NewLine);
            }

            // Write the string builder's content to the form's textbox
          //  userName.Text = sb.ToString();

        } 

使用 OpenOffice 创建交互式 PDF 表单并使用 iText(或 iTextSharp)填写它是一项 no-brainer。请阅读我的书的 Chapter 6,更具体地说是第 6.3.5 节 "Filling out a PDF form." 本节的第一部分标题为 "Creating a form with OpenOffice."

创建 真实字段 并为这些字段命名非常重要。然后您必须确保将文档导出为 PDF 格式:

如您所见,您需要选中创建 PDF 旁边的复选框。

我有理由相信你没有这样做,因为你说:

based on the samples while i am trying to add , the count of the fields in the pdf template is showing as 0.

如果您希望我们检查该 PDF 模板中的字段数是否为 0 或者您是否做错了什么,您应该分享您的 PDF。

如果您做事正确(即:如我书中所述),您可以像这样填写表格:

PdfReader reader = new PdfReader(template);
PdfStamper stamper = new PdfStamper(reader,
    new FileStream(newFile, FileMode.Create));
AcroFields form = stamper.AcroFields;         
form.SetField(key1, value1);      
form.SetField(key2, value2);      
form.SetField(key3, value3);
...
stamper.Close();

在此代码段中,key1key2key3、...是您在 OpenOffice 中创建表单时为字段定义的值,value1, value2, value3,... 是您要添加到字段的值。