【问题标题】:Fill PDF Form with Itextsharp使用 Itextsharp 填写 PDF 表单
【发布时间】:2013-01-08 01:35:56
【问题描述】:

我正在尝试使用 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

有什么想法吗?

编辑 ::

【问题讨论】:

    标签: c# forms pdf itextsharp fill


    【解决方案1】:

    尝试:

    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();
    }
    

    【讨论】:

    • @Sam1 您的 pdf 文件不是 AcroForm :(。Ypu 将不得不在 pdf 文档的正确位置(即页面中的笛卡尔坐标)插入文本框。
    • 例如来自here
    • 这有效,但一次只适用于一页......我如何让它包含整个页面
    • 或者如果我可以将其转换为可编辑,因为有很多框并且定位不理想
    【解决方案2】:

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

    1. 您可以直接使用硬编码或配置的“字段”位置和尺寸将文本添加到页面内容中,如 cmets 中 @tschmit007 对他的回答所描述的那样。

    2. 您将实际的 PDF 表单域添加到您的 PDF 以生成一个真正的 PDF 表单,您可以将其作为模板稍后填写。

    您可以使用一些允许这样做的图形工具添加实际的表单字段,例如Adobe Acrobat,或者您可以使用 iText(Sharp)。请查看iText in Action — 2nd Edition 的第 8 章以及可用的示例here for Javahere for .Net

    这些示例大多将表单域添加到新生成的 PDF 文档中。不过,您几乎可以使用相同的代码将表单字段添加到 PdfStamper,该 PdfStamper 使用 Java 中的 stamper.getWriter() 和 C# 中的 stamper.Writer 公开其内部 PdfWriter。不过,您必须使用stamper.addAnnotation(field, page) 而不是writer.addAnnotation(field)

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 2011-10-15
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多