【问题标题】:How to create and fill out a PDF form如何创建和填写 PDF 表单
【发布时间】:2015-11-08 17:46:21
【问题描述】:

问题的背景:我可能会在纸质/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();

        } 

【问题讨论】:

    标签: itextsharp openoffice.org


    【解决方案1】:

    使用 OpenOffice 创建交互式 PDF 表单并使用 iText(或 iTextSharp)填写是一件轻而易举的事。请阅读我的书Chapter 6,更具体地说,第 6.3.5 节“填写 PDF 表格”。本节的第一部分标题为“使用 OpenOffice 创建表单”。

    创建真实字段并为这些字段命名很重要。然后,您必须确保将文档导出为 PDF 表单:

    如您所见,您需要选中创建 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();
    

    在这个 sn-p 中,key1key2key3、...是您在 OpenOffice 中创建表单时为字段定义的值,value1value2、@987654332 @,... 是您要添加到字段中的值。

    【讨论】:

    • 我能够做到这一点,但是在 Open office 中创建 pdf 模板时,我可以管理控件长度,但是在使用 iTextsharp 控件填充控件中的数据时,控件的大小非常大,你能请纠正我实现此功能的正确方法是什么?
    • 定义尺寸很大。您是在谈论 file sizefont size(您在模板中定义它;iText 只是服从)、field size(再次:您定义这)。如果您以太大的方式定义字体或字段,则不应抱怨它们太大。如果字体或字段不是您的意思,请在新问题中说明。请勿使用此评论部分发布其他问题。
    • :好的,感谢您对上述问题的宝贵指导
    • @BrunoLowagie,您的信息非常好,答案很明确,但您的语气显得有些粗鲁。例如no-brainer 似乎相当极端,因为回答这个问题需要相当多的解释。我从其他问题中看到您有荷兰血统,所以我只想说大多数其他文化中的人并不那么直接。在 SO 上,最好采用更国际化的语气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2013-10-18
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多