如何在C#中使用.NET SDK创建、填充和提取PDF表单
交互式 PDF 表单可将静态文档转化为数据收集工具,您完全可以通过代码生成和处理这些表单。 无论是构建患者登记门户、自动化贷款申请,还是从数据库中生成数千份预填好的合规表格,IronPDF 都为 .NET 开发人员提供了一个统一且一致的 API,用于处理所有表单任务——包括表单创建、字段填充、数据提取和批量处理。
本指南将通过可直接复制到 .NET 10 项目中的 C# 代码示例,逐一讲解上述各项任务。
!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
如何开始使用 IronPDF?
IronPDF 可在 NuGet 上获取,将其添加到任何 .NET 项目中仅需约一分钟。 在 Visual Studio 中打开软件包管理器控制台并运行:
Install-Package IronPdf
Install-Package IronPdf
您也可以在 NuGet 程序包管理器 GUI 中搜索IronPdf ,或者使用 .NET CLI 添加它 dotnet add package IronPdf。 无需额外的运行时依赖项或配置文件——该库自带在 Windows、Linux、macOS、Docker 和 Kubernetes 上渲染 PDF 所需的一切。
!a href="/static-assets/pdf/blog/pdf-form-net-sdk/pdf-form-net-sdk-3.webp">PDF Forms .NET SDK:使用 IronPDF 在 C# 中创建可填充 PDF:图片 3 - 安装
该软件包面向 .NET Framework 4.6.2+ 和所有现代 .NET 版本,包括 .NET 8、.NET 9 和 .NET 10。安装软件包后,在文件顶部添加 using IronPdf;,即可生成您的第一个 PDF 表单。
在生产环境中,跨平台部署的灵活性至关重要。 无论您的应用程序面向 Windows Server、Linux 容器还是 Azure Function App,IronPDF 都能保持一致的运行表现——相同的代码在任何环境下都能生成相同的输出结果。
PDF 表单是如何工作的? 了解 AcroForms
在编写代码之前,了解你正在构建什么会很有帮助。 AcroForm 规范(自 1998 年起成为 PDF 标准的一部分)定义了交互式表单字段,任何标准 PDF 阅读器均可显示并填写这些字段。 AcroForms 支持文本框、复选框、单选按钮、下拉列表、列表框和签名字段。
AcroForms 是 IronPDF 创建和读取的文件格式。 与 XFA 表单(一种较旧的 Adobe 专有格式)不同,AcroForms 可在 Adobe Reader、基于浏览器的 PDF 阅读器以及移动应用中无缝运行,且不会出现兼容性问题。 使用 IronPDF 创建 PDF 表单时,生成的将是符合标准的 AcroForm PDF 文件,任何阅读器均可打开。
每个表单字段都包含名称、类型和值。 名称是您在通过编程方式读取或写入数据时使用的关键。 字段名称在文档内必须唯一——若通过名称填充表单时字段名称不完全匹配,写入操作将静默失败且无效,这在根据数据库模式填充表单时是常见的错误源。
字段类型决定了可接受的值。 文本字段接受任何字符串。 复选框接受"是"或"否"。 单选按钮会接受所选选项的字符串值。 下拉列表接受所选项的字符串值,该值必须是创建字段时定义的选项之一。
如何从 HTML 创建 PDF 表单?
构建可填写 PDF 表单的最快方法是将其编写为标准 HTML 代码,然后进行转换。 每个 HTML 表单元素都直接映射到其对应的 AcroForm 元素:<input type="text"> 变成文本字段,<input type="checkbox"> 变成复选框,<select> 变成下拉列表,<textarea> 变成多行文本字段。
通过在渲染器的 @@--CODE-14132--CODE-14131--CODE-14132 上设置 @@--CODE-14131--CODE-14132 来启用表单创建。 如果没有该标记,HTML 表单元素将作为静态视觉内容呈现——您可以在 PDF 中看到它们,但它们并非交互式字段。
using IronPdf;
// HTML with form elements for PDF generation
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>Newsletter:</label><br/>
<input type='checkbox' name='newsletter' value='yes'>Subscribe<br/>
<label>Comments:</label><br/>
<textarea name='comments' rows='4' style='width:300px'></textarea>
</form>
</body>
</html>";
// Enable form field generation from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Render and save the PDF with interactive fields
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
using IronPdf;
// HTML with form elements for PDF generation
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>Newsletter:</label><br/>
<input type='checkbox' name='newsletter' value='yes'>Subscribe<br/>
<label>Comments:</label><br/>
<textarea name='comments' rows='4' style='width:300px'></textarea>
</form>
</body>
</html>";
// Enable form field generation from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Render and save the PDF with interactive fields
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
每个 HTML 输入框的 name 属性都会成为 PDF 中的字段名称。 该名称即您后续在通过编程方式读取或写入字段值时所使用的名称。 选择与数据模型相匹配的名称——如果您打算从数据库对象中填充此表单,请根据对象的属性来命名字段。
输出
!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 输出
textinput 和 textarea 元素将渲染为可编辑的文本输入框。 具有匹配 name 属性的单选按钮会组合在一起,因此只能选择一个。 复选框将呈现为可切换的控件。 生成的 PDF 文件可在任何标准阅读器中打开,且所有表单字段均可直接填写。
当表单设计已作为网页存在、您的团队更倾向于以标记语言维护表单,或者您需要生成与应用程序现有 HTML 模板完全匹配的表单时,这种基于 HTML 的方法效果显著。 渲染器负责处理所有 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 添加表单字段?
当需要精确的坐标控制,或向现有 PDF 文档添加表单字段时,程序化表单字段 API 可让您直接控制每个字段的位置、大小和默认值。
使用显式的页面坐标创建字段对象。 原点 (0, 0) 位于页面的左下角,x 轴向右递增,y 轴向上递增——这是 PDF 规范中使用的同一坐标系。
using IronPdf;
using IronSoftware.Forms;
// Generate a base PDF document to add fields to
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Application Form</h1><p>Please complete all fields below.</p>");
// Text field: name, default value, page index, x, y, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);
// Checkbox field with default unchecked state
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);
// Dropdown with a defined list of options
var departmentCombo = new ComboboxFormField(
"department", "", 0, 50, 600, 150, 20,
new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);
// Save the output document
pdf.SaveAs("application-with-fields.pdf");
using IronPdf;
using IronSoftware.Forms;
// Generate a base PDF document to add fields to
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Application Form</h1><p>Please complete all fields below.</p>");
// Text field: name, default value, page index, x, y, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);
// Checkbox field with default unchecked state
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);
// Dropdown with a defined list of options
var departmentCombo = new ComboboxFormField(
"department", "", 0, 50, 600, 150, 20,
new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);
// Save the output document
pdf.SaveAs("application-with-fields.pdf");
Imports IronPdf
Imports IronSoftware.Forms
' Generate a base PDF document to add fields to
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Application Form</h1><p>Please complete all fields below.</p>")
' Text field: name, default value, page index, x, y, width, height
Dim nameField As New TextFormField("applicantName", "", 0, 50, 700, 200, 20)
pdf.Form.Add(nameField)
' Checkbox field with default unchecked state
Dim termsCheckbox As New CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15)
pdf.Form.Add(termsCheckbox)
' Dropdown with a defined list of options
Dim departmentCombo As New ComboboxFormField("department", "", 0, 50, 600, 150, 20, New List(Of String) From {"Engineering", "Marketing", "Sales", "Support"})
pdf.Form.Add(departmentCombo)
' Save the output document
pdf.SaveAs("application-with-fields.pdf")
TextFormField 创建一个单行文本输入框。 CheckboxFormField 放置一个可切换的复选框。 ComboboxFormField 创建一个仅限于所提供选项列表的下拉列表。每个类都公开了用于设置 Tab 键顺序、工具提示文本、只读状态和必填字段标志的附加属性。
HTML 转换和编程方式创建字段这两种方法可以结合使用。 从 HTML 生成基础布局以实现高效的模板控制,随后通过 API 添加定位精确的专用字段。 《表单填写与编辑指南》涵盖了所有可用的字段类型。
!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 表单——可能是政府模板、供应商合同,或是贵组织从合作伙伴处收到的标准化申请表。 通过编程方式填写这些表单,可实现文档生成的自动化,而无需重新设计原始布局。
使用 PdfDocument.FromFile 加载现有 PDF,使用 FindFormField 按名称定位每个字段,并为字段的 Value 属性赋值。
using IronPdf;
// Load the existing PDF containing AcroForm fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");
// Fill text fields by exact field 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 to one of its defined options
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";
// Save the completed form
pdf.SaveAs("completed-application.pdf");
using IronPdf;
// Load the existing PDF containing AcroForm fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");
// Fill text fields by exact field 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 to one of its defined options
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";
// Save the completed form
pdf.SaveAs("completed-application.pdf");
Imports IronPdf
' Load the existing PDF containing AcroForm fields
Dim pdf As PdfDocument = PdfDocument.FromFile("existing-application.pdf")
' Fill text fields by exact field name
Dim nameField = pdf.Form.FindFormField("applicantName")
nameField.Value = "Sarah Johnson"
Dim emailField = pdf.Form.FindFormField("email")
emailField.Value = "sarah.johnson@example.com"
' Set checkbox and radio button values
Dim termsField = pdf.Form.FindFormField("agreeTerms")
termsField.Value = "Yes"
Dim accountTypeField = pdf.Form.FindFormField("accountType")
accountTypeField.Value = "business"
' Set dropdown selection to one of its defined options
Dim departmentField = pdf.Form.FindFormField("department")
departmentField.Value = "Engineering"
' Save the completed form
pdf.SaveAs("completed-application.pdf")
FindFormField 根据表单创建期间分配的名称定位字段。 字段名匹配区分大小写且要求完全一致——"applicantName" 和 "ApplicantName" 属于不同的字段。 如果您正在填写第三方表单,并且不确定字段名称,请遍历 pdf.Form 以打印每个字段的名称,然后再尝试按名称填写。
输入
!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.Form,而不是重复调用 FindFormField。 对于批量操作,迭代更为高效,并可避免对字段集合进行重复的线性搜索。
如何读取和提取表单字段数据?
从已提交的 PDF 中提取表单数据属于反向操作:加载已填写的表单,然后读取每个字段的名称和当前值,以便进行后续处理。 该模式支持自动化接收工作流:用户只需填写 PDF 表单并上传,应用程序即可自动处理数据,无需手动录入。
using IronPdf;
// Load the completed, submitted PDF form
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");
// Iterate all fields to extract names, values, and types
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 the completed, submitted PDF form
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");
// Iterate all fields to extract names, values, and types
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})");
Imports IronPdf
' Load the completed, submitted PDF form
Dim pdf As PdfDocument = PdfDocument.FromFile("submitted-form.pdf")
' Iterate all fields to extract names, values, and types
Console.WriteLine("Form Data Extraction:")
Console.WriteLine("----------------------")
For Each field In pdf.Form
Console.WriteLine($"Field: {field.Name}")
Console.WriteLine($"Value: {field.Value}")
Console.WriteLine($"Type: {field.GetType().Name}")
Console.WriteLine()
Next
' Or retrieve specific fields for targeted processing
Dim customerName As String = If(pdf.Form.FindFormField("applicantName")?.Value, "Not provided")
Dim customerEmail As String = If(pdf.Form.FindFormField("email")?.Value, "Not provided")
Console.WriteLine($"Customer: {customerName} ({customerEmail})")
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 - 控制台输出
空条件运算符 ?. on FindFormField 处理预期字段缺失的情况 - 在处理来自多个来源的表单时非常有用,这些表单可能具有略微不同的字段结构。 请务必提供备用值或进行空值检查,切勿默认字段存在。
提取的数据可直接与 Entity Framework 或 ADO.NET Framework 集成以进行数据库写入,支持 JSON 序列化用于 API 响应,并可生成 CSV 文件用于报表生成。 当您需要从扫描件或基于图像的表单提交中提取数据,且字段未通过数字方式填写时,请将 IronPDF 与 IronOCR 配合使用。
如何大规模生成个性化表单?
PDF 表单自动化的最常见应用场景是批量生成——从数据库、API 或 CSV 文件中提取数据,预先填充数百或数千份表单。只需一个简单的循环即可实现,无需任何额外的基础设施。
using IronPdf;
// Retrieve customer records from your data source
var customers = GetCustomersFromDatabase();
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
foreach (var customer in customers)
{
// Build an HTML template with static data pre-filled and interactive fields for user input
string formHtml = $@"
<html><body>
<h2>Annual Review Form</h2>
<p>Customer: {customer.Name}</p>
<p>Account: {customer.AccountNumber}</p>
<label>Satisfaction Rating (1-5):</label><br/>
<input type='text' name='rating' maxlength='1'><br/>
<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;
// Retrieve customer records from your data source
var customers = GetCustomersFromDatabase();
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
foreach (var customer in customers)
{
// Build an HTML template with static data pre-filled and interactive fields for user input
string formHtml = $@"
<html><body>
<h2>Annual Review Form</h2>
<p>Customer: {customer.Name}</p>
<p>Account: {customer.AccountNumber}</p>
<label>Satisfaction Rating (1-5):</label><br/>
<input type='text' name='rating' maxlength='1'><br/>
<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");
}
Imports IronPdf
' Retrieve customer records from your data source
Dim customers = GetCustomersFromDatabase()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
For Each customer In customers
' Build an HTML template with static data pre-filled and interactive fields for user input
Dim formHtml As String = $"
<html><body>
<h2>Annual Review Form</h2>
<p>Customer: {customer.Name}</p>
<p>Account: {customer.AccountNumber}</p>
<label>Satisfaction Rating (1-5):</label><br/>
<input type='text' name='rating' maxlength='1'><br/>
<label>Feedback:</label><br/>
<textarea name='feedback' rows='5' style='width:100%'></textarea>
</body></html>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(formHtml)
pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf")
Next
该 HTML 模板直接嵌入了静态客户数据,因此收件人会看到预先打印好的姓名和账号,同时还提供了用于填写所需数据的交互式字段。 批量处理数百条记录仅需数秒即可完成,而手动准备则需要数小时。
该循环结构适用于任何数据源:Entity Framework 查询、API 响应或 CSV 导入。 每次迭代都会生成一份针对该记录定制的完整、可直接分发的 PDF 文件。 对于高吞吐量场景,使用 async/await 与 Task.WhenAll 并行渲染表单 - IronPDF 的 RenderHtmlAsPdfAsync 方法支持完全异步渲染。
批量生成后,表单通常会通过 IronZIP 打包为 ZIP 压缩包以便分发,或通过电子邮件集成发送、上传至云存储,或转发至电子签名平台以完成法律效力签署。
如何在填写完成后将 PDF 表单扁平化或锁定?
表单填写完毕并经过验证后,通常需要将其锁定,以防止值被进一步编辑。 "扁平化"功能将所有交互式表单字段转换为静态、不可编辑的视觉内容,同时完整保留已填写表单的外观。
using IronPdf;
// Load a completed, signed form
PdfDocument pdf = PdfDocument.FromFile("completed-application.pdf");
// Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten();
// Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf");
using IronPdf;
// Load a completed, signed form
PdfDocument pdf = PdfDocument.FromFile("completed-application.pdf");
// Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten();
// Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf");
Imports IronPdf
' Load a completed, signed form
Dim pdf As PdfDocument = PdfDocument.FromFile("completed-application.pdf")
' Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten()
' Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf")
"扁平化"是归档已填写表单、生成符合 PDF/A 标准的长期存储文档以及制作最终分发副本的正确方法。 扁平化处理后,表单数据仍然可见,但无法修改。 PDF 扁平化指南涵盖了其他扁平化选项,包括选择性字段扁平化。
对于需要具有法律约束力的场景,IronPDF 还支持数字签名,该功能通过加密技术将签名者的身份与文档绑定。 数字签名和表单扁平化具有不同的用途——签名用于验证真实性,而扁平化则用于防止篡改。
下一步计划是什么?
.NET Core 中的 PDF 表单涵盖四项核心操作:通过 HTML 或 API 创建表单、从数据源填充现有表单、提取已提交的数据,以及大规模批量生成个性化副本。 IronPDF 通过统一的 API 处理这四项功能,同一套代码可在 Windows、Linux、macOS 以及容器环境中运行。
《创建 PDF 表单》操作指南通过代码示例详细介绍了所有可用的字段类型。 《表单填写与编辑指南》对批量字段更新、单选按钮组以及列表框的处理进行了更深入的讲解。 IronPDF 文档中心提供了完整的 API 参考以及高级主题,包括多页表单、表单字段验证以及针对高吞吐量管道的性能调优。
立即开始免费试用,在您的项目中探索 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 - 许可
常见问题解答
IronPDF使用哪种PDF表单标准?
IronPDF创建和读取AcroForms——自1998年PDF规范中定义的交互表单标准。AcroForms受到Adobe Reader、基于浏览器的PDF查看器和移动应用的支持,而较旧的XFA格式兼容性有限。
如何在IronPDF中启用从HTML创建表单字段?
在调用`RenderHtmlAsPdf`之前,设置`renderer.RenderingOptions.CreatePdfFormsFromHtml = true`。没有此标志,HTML表单元素将呈现为静态视觉内容而不是交互式AcroForm字段。
如何在现有PDF表单中填写特定字段?
使用`PdfDocument.FromFile`加载PDF,调用`pdf.Form.FindFormField("fieldName")`检索字段对象,然后为其`Value`属性分配字符串。字段名称匹配区分大小写。使用`pdf.SaveAs`保存结果。
如何从提交的PDF中提取所有表单字段值?
使用`foreach (var field in pdf.Form)`遍历`pdf.Form`并读取每个字段的`Name`和`Value`属性。针对特定的提取,使用`pdf.Form.FindFormField("name")?.Value`与null条件运算符一起使用来安全地处理缺失字段。
IronPDF可以在循环中从数据库生成数百个表单吗?
可以。创建一个`ChromePdfRenderer`,设置`CreatePdfFormsFromHtml = true`,遍历数据记录,为每个记录构建HTML字符串,调用`RenderHtmlAsPdf`并保存每个结果。对于高吞吐量,使用`RenderHtmlAsPdfAsync`与`Task.WhenAll`并行渲染。
使PDF表单扁平化的功能是什么?
扁平化将所有交互式表单字段转换为静态的、不可编辑的视觉内容,同时保留填写表单的外观。调用`pdf.Form.Flatten()`然后保存。结果适合存档、PDF/A的合规性和禁止字段编辑的分发。
IronPDF能在Linux和Docker容器中运行吗?
能。IronPDF可在Windows、Linux、macOS、Docker和Kubernetes上运行。同一段C#代码在所有平台上生成相同的PDF输出。查看文档中的IronPDF Linux和Docker指南以了解平台特定的配置。
IronPDF支持哪些平台和.NET版本用于PDF表单?
IronPDF支持.NET Framework 4.6.2及以上版本,以及所有现代.NET版本,包括.NET 6、.NET 7、.NET 8、.NET 9和.NET 10。它还支持ASP.NET、ASP.NET Core、Blazor Server、Azure Functions和MAUI应用程序。



