c# - 使用 Itextsharp 填写 PDF 表单

标签 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);
            }

但是foreach循环总是空计数。我已经尝试过 here 中的示例,我需要做些什么来归档自己吗?它工作正常... this is an example of pdf I am trying to fill

有什么想法吗?

编辑::

Null Error on PDF Fields

最佳答案

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

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

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

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

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

关于c# - 使用 Itextsharp 填写 PDF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498931/

相关文章:

android - android 是否提供通过某些控件在应用程序中阅读电子书的功能?

c# - 如何从 HttpResponse 编码二进制 PDF?

c# - Nuget在哪里获取项目-All | Add-BindingRedirect 获取其版本号?

python - Django 日期表单字段不能接受 |date :"SHORT_DATE_FORMAT"过滤器

javascript - 主脚本和内容脚本之间的数据交换——Firefox Addon SDK

ruby-on-rails - Rails 通过 div 包装有错误的字段

c# - 使用 XML WebApi

c# - Linq2db:查询对象层次结构的有效方法

c# - 尝试启动第一个 WCF 服务

php - 使用 PHP 将 .pdf 文件作为 BLOB 保存到 MySQL 时出错