如何创建和填写PDF表单

时间:2015-11-08 17:46:22

标签: itextsharp openoffice.org

问题的背景:我可能会在纸/ word document.pdf文档模板中获得不同类型的模板,其中包含控件(文本框,复选框)。

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

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

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

基于我试图添加的样本,pdf模板中字段的计数显示为0.是否有人可以帮我分配PDF模板的值? 以下是我为此案例使用的代码。

   private void ListFieldNames()
        {
            string pdfTemplate = @"D:\17.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();

        } 

1 个答案:

答案 0 :(得分:3)

使用OpenOffice创建交互式PDF表单并使用iText(或iTextSharp)填写它是一个明智的选择。请阅读我的书的Chapter 6,更具体地说,请参阅第6.3.5节“填写PDF表单”。本节的第一部分标题为“使用OpenOffice创建表单。”

enter image description here

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

enter image description here

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

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

  

基于我尝试添加的样本,pdf模板中的字段数显示为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();

在此代码段key1中,key2key3,...是您在OpenOffice和value1中创建表单时为字段定义的值, value2value3,...是您要添加到字段中的值。