跳至页脚内容
使用IRONPDF

PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填写的 PDFs

交互式 PDF 表单将静态 PDF 文档转化为动态数据收集工具。 无论是建立客户接待系统、自动处理政府合规文件,还是简化内部工作流程,以编程方式创建、填充和处理 PDF 文件的能力都能节省无数的开发时间。 对于涉及扫描文档或数字纸张混合流程的工作流程,光学字符识别 (OCR) 等先进功能可将图像或扫描表单输入转换为机器可读文本,从而进一步提高自动化程度。

各行各业的组织都依赖可填写的 PDF 表单进行标准化数据收集。 医疗机构使用这些工具进行病人登记,金融机构使用这些工具进行贷款申请,政府机构使用这些工具提供公民服务。 挑战在于动态生成这些表单,从不同的数据源填充现有数据,并提取表单数据进行处理--所有这些都无需人工干预。 在处理大批量生成的文档时,表单通常会被导出、存档或以压缩文件的形式交付,以便于分发。

本指南演示了如何使用现代 .NET PDF 库 IronPDF 将全面的 PDF 表单功能集成到 .NET 应用程序中。 每项技术都包含工作代码示例,只需几行代码即可实现。

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-1.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填写的 PDF:图片 1 - IronPdf

是什么让 PDF 表单 SDK 成为 .NET 开发的必备工具?

PDF SDK 提供了在 PDF 文档中创建、操作和处理交互式表单字段所需的编程工具。 与在桌面应用程序中手动设计表单相比,开发人员可以使用 Visual Studio 或任何兼容的构建工具直接从其 .NET 应用程序中生成动态、数据驱动的表单。

交互式 PDF 表单最广泛支持的格式是 AcroForms,它自 1998 年以来一直是 PDF 规范的一部分。AcroForms 支持文本表单字段、复选框、单选按钮、下拉菜单和签名字段,用户可以在任何标准的 PDF 查看器中完成这些操作。 与 XFA 表单不同,AcroForms 可跨平台兼容 Adobe Reader、基于浏览器的阅读器和移动应用程序。

现代 .NET PDF 库解决方案为企业应用程序提供了关键功能:将 HTML 表单结构直接转换为可填写的 PDF 字段; 在任何 PDF 页面上以编程方式添加具有精确定位的单个表单元素; 读写表单数据值,以便与各种数据源进行数据库集成; 在翻译过程中,译员还必须确保翻译的准确性,同时解释这些开发人员工具的功能和优点。 最好的 SDK 在提供直观的 API 的同时,还具有低内存占用率和出色的性能。

在生产环境中,部署的灵活性同样至关重要。 IronPdf.Linux 可在 Windows、macOS 以及 Docker 和 Kubernetes 等容器环境中运行。 这种跨平台兼容性确保了 PDF 生成的一致性,无论 .NET 应用程序在哪里运行--是针对 .NET Framework、.NET Core 还是现代 .NET 版本。

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-2.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图片 2 - 跨平台兼容性

通过 Visual Studio 的解决方案资源管理器或软件包管理器控制台安装 IronPdf NuGet 软件包:

Install-Package IronPdf
Install-Package IronPdf
SHELL

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-3.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图片 3 - 安装

开发人员如何从 HTML 创建 PDF 表单?

利用现有的 HTML 知识构建 PDF 表单是最直观的方法。 将 HTML 转换为 PDF 时,标准 HTML 表单元素(如 <input><textarea><select> 和各种输入类型)将直接转换为 PDF 表单字段的对应元素。

将 HTML 表单转换为 PDF 需要在渲染选项中启用表单创建。 CreatePdfFormsFromHtml 属性指示渲染引擎将 HTML 表单元素解释为交互式 AcroForm 字段,而不是输出 PDF 中的静态可视内容。

using IronPdf;
// HTML containing various form elements for PDF creation
string formHtml = @"
<html>
<body>
    <h2>Customer Registration</h2>
    <form>
        <label>Full Name:</label><br/>
        <input type='text' name='fullName'><br/>
        <label>Email Address:</label><br/>
        <input type='email' name='email'><br/>
        <label>Account Type:</label><br/>
        <select name='accountType'>
            <option value='personal'>Personal</option>
            <option value='business'>Business</option>
        </select><br/>
        <label>Services:</label><br/>
        <input type='checkbox' name='services' value='newsletter'>Subscribe to newsletter<br/>
        <label>Comments:</label><br/>
        <textarea name='comments' rows='4' style='width:300px'></textarea>
    </form>
</body>
</html>";
// Configure renderer to generate PDF with form fields
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Generate the PDF document with interactive forms
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
using IronPdf;
// HTML containing various form elements for PDF creation
string formHtml = @"
<html>
<body>
    <h2>Customer Registration</h2>
    <form>
        <label>Full Name:</label><br/>
        <input type='text' name='fullName'><br/>
        <label>Email Address:</label><br/>
        <input type='email' name='email'><br/>
        <label>Account Type:</label><br/>
        <select name='accountType'>
            <option value='personal'>Personal</option>
            <option value='business'>Business</option>
        </select><br/>
        <label>Services:</label><br/>
        <input type='checkbox' name='services' value='newsletter'>Subscribe to newsletter<br/>
        <label>Comments:</label><br/>
        <textarea name='comments' rows='4' style='width:300px'></textarea>
    </form>
</body>
</html>";
// Configure renderer to generate PDF with form fields
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Generate the PDF document with interactive forms
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

下面的代码片段创建了一个包含多个字段类型的完整客户注册表单。ChromePdfRenderer 类处理 HTML 到 PDF 的转换,设置 CreatePdfFormsFromHtml = true 可确保表单元素呈现为交互式字段。 在以编程方式读取或写入表单数据时,每个 HTML 输入的 name 属性都是字段标识符。

输出

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-4.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图像 4 - PDF 输出

文本输入和文本区域将成为可编辑的文本表单域,用户可以在其中键入回复。 名称属性匹配的单选按钮组合在一起,因此只能选择一个。 翻译后的 PDF 文件可在任何标准浏览器中打开,并带有功能齐全的表单字段供用户填写。

当表单设计已经作为网页存在,或者团队更喜欢用熟悉的标记来维护表单时,这种基于 HTML 的方法就能很好地发挥作用。.NET SDK 在幕后处理 PDF 生成的所有复杂问题。

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-5.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图片 5 - 功能

如何以编程方式添加表单字段?

当需要精确控制字段位置,或向现有 PDF 文档添加表单时,编程 API 方法可提供最大的灵活性。 可以通过编程创建、定位和配置单个表单字段,以生成所需的精确文档结构。

using IronPdf;
using IronSoftware.Forms;
// Start with a basic PDF document
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Application Form</h1><p>Please complete all fields below.</p>");
// Add a text form field at specific coordinates on the PDF page
// Parameters: name, default value, page index, x position, y position, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);
// Add a checkbox field to the document
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);
// Add a combobox (dropdown) with options for users to select
var departmentCombo = new ComboboxFormField("department", "", 0, 50, 600, 150, 20, new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);
// Save the output PDF document
pdf.SaveAs("application-with-fields.pdf");
using IronPdf;
using IronSoftware.Forms;
// Start with a basic PDF document
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Application Form</h1><p>Please complete all fields below.</p>");
// Add a text form field at specific coordinates on the PDF page
// Parameters: name, default value, page index, x position, y position, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);
// Add a checkbox field to the document
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);
// Add a combobox (dropdown) with options for users to select
var departmentCombo = new ComboboxFormField("department", "", 0, 50, 600, 150, 20, new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);
// Save the output PDF document
pdf.SaveAs("application-with-fields.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本示例演示了如何添加三种字段类型以创建带有交互式表单字段的 PDF。 TextFormField 使用页面坐标创建单行文本输入,原点(0,0)位于 PDF 页面的左下角。

CheckboxFormField 放置一个可切换的复选框,而 ComboboxFormField 创建一个下拉菜单。 PDF 库会自动处理所有底层文档结构。

编程方法擅长从数据库模式动态生成表单或在现有文档中添加表单字段。 两种方法可以结合使用--使用 HTML 作为基本布局,同时以编程方式添加特定字段。 .NET SDK 文档齐全,代码示例涵盖所有表单字段类型。

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-6.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充的 PDF:Image 6 - PDF Forms .NET SDK - IronPDF

填写现有 PDF 表单有哪些方法?

许多工作流程涉及完成现有表单,而不是创建新表单。 政府表格、合同和标准化文件通常是预先设计好的 PDF 文件,具有既定的字段结构。 以编程方式填写这些表单可实现跨网络应用程序和后端系统的大规模自动文档生成和处理。

using IronPdf;
// Load a PDF file containing existing form fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");
// Find and fill specific form fields by name
var nameField = pdf.Form.FindFormField("applicantName");
nameField.Value = "Sarah Johnson";
var emailField = pdf.Form.FindFormField("email");
emailField.Value = "sarah.johnson@example.com";
// Set checkbox and radio button values
var termsField = pdf.Form.FindFormField("agreeTerms");
termsField.Value = "Yes";
var accountTypeField = pdf.Form.FindFormField("accountType");
accountTypeField.Value = "business";
// Set dropdown selection
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";
// Save the completed output PDF document
pdf.SaveAs("completed-application.pdf");
using IronPdf;
// Load a PDF file containing existing form fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");
// Find and fill specific form fields by name
var nameField = pdf.Form.FindFormField("applicantName");
nameField.Value = "Sarah Johnson";
var emailField = pdf.Form.FindFormField("email");
emailField.Value = "sarah.johnson@example.com";
// Set checkbox and radio button values
var termsField = pdf.Form.FindFormField("agreeTerms");
termsField.Value = "Yes";
var accountTypeField = pdf.Form.FindFormField("accountType");
accountTypeField.Value = "business";
// Set dropdown selection
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";
// Save the completed output PDF document
pdf.SaveAs("completed-application.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PdfDocument.FromFile 方法将任何包含 AcroForm 字段的 PDF 文件加载到内存中进行编辑。 FindFormField 方法根据创建表格时指定的名称查找字段。 设置 Value 属性可将数据源中的数据填充到字段中。

输入

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-7.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填写的 PDF:图片 7 - PDF 输入示例。

输出

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-8.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图像 8 - 填充 PDF 输出。

不同的字段类型接受适当的值格式。 文本表单字段直接接收字符串内容。 复选框通常接受 "是 "或 "否"。 单选按钮接受所选选项的值。 在处理具有多个字段的表单时,直接在表单集合上迭代会更有效,从而使您能够处理多个 PDF 文件。

如何读取和提取表单数据?

从完成的 PDF 文档中提取表单数据可以实现与数据库、验证系统和下游处理工作流的集成。 当用户提交填写完毕的表单时,无论是通过电子邮件接收、通过门户网站上传,还是从共享文件夹中收集,都需要提取提交的值进行业务处理。

读取表单字段值遵循与填写表格类似的模式,但检索信息而不是设置信息。 表单集合公开了所有字段,既可以有针对性地提取特定值,也可以全面迭代每个字段。 您还可以将表单数据导出为各种格式,以便与其他系统集成。

using IronPdf;
// Load a completed PDF form for data extraction
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");
// Iterate through all form fields to extract text and values
Console.WriteLine("Form Data Extraction:");
Console.WriteLine("----------------------");
foreach (var field in pdf.Form)
{
    Console.WriteLine($"Field: {field.Name}");
    Console.WriteLine($"Value: {field.Value}");
    Console.WriteLine($"Type: {field.GetType().Name}");
    Console.WriteLine();
}
// Or retrieve specific fields for targeted processing
var customerName = pdf.Form.FindFormField("applicantName")?.Value ?? "Not provided";
var customerEmail = pdf.Form.FindFormField("email")?.Value ?? "Not provided";
Console.WriteLine($"Customer: {customerName} ({customerEmail})");
using IronPdf;
// Load a completed PDF form for data extraction
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");
// Iterate through all form fields to extract text and values
Console.WriteLine("Form Data Extraction:");
Console.WriteLine("----------------------");
foreach (var field in pdf.Form)
{
    Console.WriteLine($"Field: {field.Name}");
    Console.WriteLine($"Value: {field.Value}");
    Console.WriteLine($"Type: {field.GetType().Name}");
    Console.WriteLine();
}
// Or retrieve specific fields for targeted processing
var customerName = pdf.Form.FindFormField("applicantName")?.Value ?? "Not provided";
var customerEmail = pdf.Form.FindFormField("email")?.Value ?? "Not provided";
Console.WriteLine($"Customer: {customerName} ({customerEmail})");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Form 属性公开了文档中所有表单字段的可枚举集合。 每个字段对象都提供了 Name 、当前 Value 和类型信息。 这样就可以构建通用表单处理器,处理任何 PDF 表单结构,而无需硬编码字段名称。

输出

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-9.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图像 9 - 控制台输出

为了进行有针对性的提取,FindFormField 可按名称检索单个字段。 空条件运算符 (?.) 可处理预期字段可能不存在的情况,从而防止在处理各种来源的表单时出现运行时错误。

提取的数据可与用于数据库存储的 Entity Framework 或 ADO.NET 自然集成。 JSON 序列化可实现网络应用程序的 API 响应,而 CSV 生成可支持报告工作流。 .NET PDF 库可以直接将表单数据导入现有系统。

哪些现实世界场景受益于 PDF 表单自动化?

PDF 表单自动化为众多行业和使用案例带来了可衡量的价值。 医疗机构需要处理病人接收表、保险索赔和同意书。 法律部门在处理 Word 文档和其他文件类型的同时,还要处理合同、宣誓书和合规认证。人力资源团队负责管理就业申请、福利注册和绩效考核。 金融服务自动处理贷款申请、账户开立和监管备案,这些工作可能还需要数字签名。

连接这些场景的共同点是大批量、重复性的文档处理,人工数据录入会造成瓶颈并带来错误。 文档生成和表单处理自动化可将周转时间从数天缩短到数秒,同时提高数据的准确性。

考虑一个常见的场景:根据数据库记录为成千上万的客户生成个性化的评论表单。 简单的循环处理整个数据集,为每条记录生成 PDF,而不是手动创建每个表单。

using IronPdf;
// Example: Generating personalized PDF forms from database records
var customers = GetCustomersFromDatabase(); // Returns customer data from your data sources
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
foreach (var customer in customers)
{
    // Generate each form with customer data pre-filled
    string formHtml = $@"
    <html><body>
        <h2>Annual Review Form</h2>
        <p>Customer: {customer.Name}</p>
        <p>Account: {customer.AccountNumber}</p>
        <label>Satisfaction Rating:</label><br/>
         1
         2
         3
         4
        <label>Feedback:</label><br/>
        <textarea name='feedback' rows='5' style='width:100%'></textarea>
    </body></html>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
    pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf");
}
using IronPdf;
// Example: Generating personalized PDF forms from database records
var customers = GetCustomersFromDatabase(); // Returns customer data from your data sources
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
foreach (var customer in customers)
{
    // Generate each form with customer data pre-filled
    string formHtml = $@"
    <html><body>
        <h2>Annual Review Form</h2>
        <p>Customer: {customer.Name}</p>
        <p>Account: {customer.AccountNumber}</p>
        <label>Satisfaction Rating:</label><br/>
         1
         2
         3
         4
        <label>Feedback:</label><br/>
        <textarea name='feedback' rows='5' style='width:100%'></textarea>
    </body></html>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
    pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

该模式演示了如何为每个客户记录生成个性化表单。 HTML 模板包含静态客户信息,同时提供交互式表单字段供用户填写。 批量处理成百上千个 PDF 文件只需几秒钟,而手工准备则需要几个小时。

循环结构可以直接与任何数据源集成--Entity Framework 查询、API 响应或从源文件导入 CSV。 每次迭代都要生成一个完整的、可随时分发的表单,并预先填写收件人的信息。

整合的可能性包括用于分发的电子邮件自动化、用于存档的云存储服务以及用于完成具有法律约束力的电子签名平台。 .NET PDF SDK 还支持提取文本和图像、将 PDF 转换为其他格式以及合并多个 PDF 文档等功能。

IronPDF文档为高级应用场景提供了更多示例,包括多页面表单处理和表单字段验证。 对于复杂的企业工作流程,教程部分提供了有关数字签名、生成可访问性标记 PDF 和优化大容量处理的深入指导。

结论

功能强大的 PDF 表单 .NET SDK 改变了 .NET 应用程序处理基于文档的数据收集的方式。 从简单的联系表单到复杂的多页应用程序,程序化 PDF 创建消除了手工设计工作,同时实现了动态、数据驱动的文档生成。

所涉及的技术为构建复杂的表单工作流奠定了基础。 基于 HTML 的表单创建是实现功能性 PDF 表单的最快途径--只需几行代码即可将 HTML 转换为交互式文档。 程序化的字段添加可实现对专业要求的精确控制。 表格填写和数据提取实现了从创建到处理的端到端自动化。

IronPDF 为在生产项目中实现这些功能提供了完整的工具包。 PDF 库可以处理复杂的 PDF 表单规范,同时提供简洁、直观的 API。支持 Windows、Linux、macOS 和容器化部署,确保表单在所有目标环境中都能一致运行。 无论您使用 Visual Studio、.NET Core CLI 还是您首选的构建工具,都可以通过解决方案资源管理器中的 NuGet 直接集成。

开始免费试用,在您自己的项目中探索 PDF 表单功能,或查看用于生产部署的许可选项

!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-10.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填写的 PDF:图片 10 - 许可

常见问题解答

使用交互式 PDF 表单有什么好处?

交互式 PDF 表单将静态 PDF 文档转化为动态数据收集工具,实现了客户接待系统、合规文书工作和内部工作流程的自动化和高效化。

PDF 表单如何节省开发时间?

PDF 表单允许开发人员以编程方式创建、填充和处理 PDF 文件,从而减少了手动输入数据的需要并简化了数据收集流程,从而节省了开发时间。

IronPDF 为 PDF 表单自动化提供了哪些高级功能?

IronPDF 提供光学字符识别 (OCR) 等高级功能,可将图像或扫描表格输入转换为机器可读文本,从而提高涉及扫描文档的工作流程的自动化程度。

IronPdf 能否处理数字-纸张混合流程?

是的,IronPDF 可以通过使用 OCR 将扫描或拍照的文档输入转换为可编辑和可搜索的文本,促进与数字工作流的无缝集成,从而处理数字-纸张混合流程。

IronPdf 如何提高工作流程效率?

IronPDF 可创建和处理交互式 PDF 表单,减少手工输入,实现数据自动处理,从而提高工作流程效率。

是否可以使用 PDF 表单自动处理政府合规性文书工作?

是的,PDF 表单可以通过动态、可填写的文档简化必要信息的收集和处理,从而实现政府合规文书工作的自动化。

OCR 在 PDF 表单处理中扮演什么角色?

OCR 通过将扫描图像或手写输入转换为机器可读文本,促进数据提取和自动化,在 PDF 表单处理中发挥着至关重要的作用。

IronPDF 如何增强扫描文档的工作流程?

IronPdf 通过使用 OCR 技术将基于图像的输入转换为文本,使其在数字系统中可编辑和搜索,从而增强扫描文档的工作流程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。