Spire.PDF 12.10.7 现已正式发布。该版本新增 Spire.Pdf.Interactive.Forms 命名空间,为 PDF 表单域的创建、读取、修改与导出提供一套统一、完整的 API。同时,扩展了对 XFA 表单的支持,并支持以 XML、FDF 和 XFDF 格式导入和导出表单数据。 这些增强功能为开发者处理交互式 PDF 表单提供了更加灵活、高效的方式。详情请查阅以下内容。
新功能:
- 新增 Spire.Pdf.Interactive.Forms 命名空间,支持创建、读取、修改和扁平化 AcroForm 表单字段。
- 新增通过 Spire.Pdf.Interactive.Forms.Xfa 命名空间访问和处理 XFA 表单的功能。
- 新增通过 PdfForm 以 XML、FDF 和 XFDF 格式导入和导出 PDF 表单数据的功能。
1. 新增 Spire.Pdf.Interactive.Forms 命名空间
新版本新增 Spire.Pdf.Interactive.Forms 命名空间,为 PDF 表单域的创建、读取、修改与导出提供一套统一、完整的 API。 覆盖 AcroForm 的常见字段类型,各字段的关键属性与方法如下。
支持的 AcroForm 表单字段类型
| 字段类型 | 属性 / 方法 | 说明 |
| 文本字段 PdfTextField | IsMultiline | 是否允许多行输入 |
| IsPassword | 以掩码显示(密码字段) | |
| MaxLen | 允许输入的最大字符数 | |
| IsComb | 使用字符格子逐格输入 | |
| DoNotSpellCheck | 禁用拼写检查 | |
| Text | 字段的文本内容 | |
| Font | 字段字体 | |
| 复选框 PdfCheckBoxField | IsChecked | 当前是否选中 |
| OnValue | 选中状态对应的导出值 | |
| Style | 视觉样式(Check/Circle/Cross/Diamond/Square/Star) | |
| 单选按钮 PdfRadioButtonField | Options | 各选项的导出值集合 |
| SelectedIndex | 当前选中项的索引 | |
| SelectedValue | 当前选中项的导出值 | |
| NoToggleToOff | 选中后是否禁止取消选择 | |
| AddOption() | 向页面添加一个新的单选选项 | |
| 组合框 PdfComboBoxField | Items | 下拉选项集合 |
| IsMultiSelect | 是否允许多选 | |
| SelectedIndex | 当前选中项的索引 | |
| SelectedValue | 当前选中项的导出值 | |
| CascadeTo() | 与另一个组合框建立 JavaScript 级联 | |
| 列表框 PdfListBoxField | Items | 列表选项集合 |
| IsMultiSelect | 是否允许多选 | |
| TopIndex | 首个可见列表项的索引 | |
| SelectedIndices | 选中项的索引集合 | |
| SelectedValues | 选中项的导出值集合 | |
| 推送按钮 PdfPushButtonField | Text / RolloverText / DownText | 正常 / 悬停 / 按下状态的按钮文字 |
| Icon / RolloverIcon / DownIcon | 对应三种状态的显示图标 | |
| Layout | 图标与文字的排布方式 | |
| Action | 单击按钮时执行的动作 | |
| 签名字段 PdfSignatureField | Signature | 与字段关联的数字签名对象 |
除上述各字段专有的成员外,所有字段还继承自 PdfField 的通用属性,包括:
- IsReadOnly:指定字段是否为只读。
- IsRequired:指定字段是否为必填项。
- AlternateName:获取或设置字段的替代名称。
- MappingName:获取或设置字段的映射名称。
- DefaultAppearance:获取或设置字段的默认外观。
所有字段还可以调用 Flatten() 方法,将表单字段扁平化为静态页面内容。
2. 延伸支持 XFA 表单
在 Spire.Pdf.Interactive.Forms.Xfa 子命名空间下,新版同时提供 XFA 表单访问能力。常见的 XFA 字段类型及其属性如下。
支持的 XFA 表单字段类型
| 字段类型 | 属性 / 方法 | 说明 |
| XFA 表单 XfaForm | FieldNames | 表单模板中的字段名称列表 |
| XfaFields | 表单模板中的字段对象列表 | |
| Count | 表单字段数量 | |
| GetField(name) | 按名称获取 XFA 字段 | |
| CheckFieldExists(name) | 判断指定字段是否存在 | |
| 文本 XfaTextField | Value | 字段的文本值 |
| 数值 XfaNumericField | Format | 数值格式字符串 |
| Value | 字段数值(decimal) | |
| 复选框 XfaCheckBoxField | IsChecked | 当前是否选中 |
| 单选按钮 XfaRadioButtonField | Options | 各选项的导出值列表 |
| SelectedIndex | 当前选中项的索引 | |
| SelectedValue | 当前选中项的导出值 | |
| NoToggleOff | 选中后是否禁止取消选择 | |
| 选择列表 XfaChoiceField | Items | 可选项(显示值)列表 |
| IsMultiSelect | 是否支持多选 | |
| SelectedItem | 当前选中的单项 | |
| SelectedItems | 当前选中的项目列表 | |
| 日期时间 XfaDateTimeField | Value | 字段的日期 / 时间值 |
| 图像 XfaImageField | Image | 字段的图像(Stream / Image) |
| 条码 XfaBarcodeField | Value | 条码值 |
| Length | 条码长度 | |
| StartChar | 条码起始字符 | |
| EndChar | 条码结束字符 |
所有 XFA 字段均继承自 XfaField 的通用属性,包括:
- Name:字段名称。
- XfaForm:字段所属的 XFA 表单。
- FieldType:字段类型标识。
其中,XfaSignatureField(签名字段)和 XfaPushButtonField(推送按钮)未定义额外的公共属性,主要通过上述通用成员访问。
3. 新增表单数据导入和导出功能
PdfForm 现已支持在 XML、FDF、XFDF 三种格式之间导入与导出表单数据。这项功能便于在 PDF 表单、业务系统和第三方 PDF 工具之间交换数据。
代码示例:
using System.Drawing;
using System.Collections.Generic;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Interactive.Forms;
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.Pages.Add();
// 新命名空间下通过 PdfForm.Create() 获取表单容器
PdfForm form = PdfForm.Create(doc);
// 创建文本字段并添加到页面
PdfTextField nameField = new PdfTextField(form, "Address.Street");
nameField.DefaultAppearance = new PdfDefaultAppearance(
new PdfFont(PdfFontFamily.Helvetica, 12), new PdfRGBColor(0, 0, 0));
nameField.AddWidget(page, new RectangleF(100, 100, 250, 30));
nameField.Value = "123 Main St";
// 按名称与前缀检索字段
PdfField field = form.GetField("Address.Street");
List<PdfField> addressFields = form.Fields.FindByPrefix("Address");
// 拍平为静态内容并保存
form.Flatten();
doc.SaveToFile("output.pdf");
表单数据也可直接以 XFDF 等格式互通:
// 导出表单数据为 XFDF,并从文件回填
form.ExportData("form.xfdf", DataFormat.XFDF, "PurchaseOrder");
form.ImportData("form.xfdf", DataFormat.XFDF);
获取 Spire.PDF 12.10.7, 请点击:







