Spire.PDF 12.10.7 新增 PDF 表单字段与 XFA 表单支持
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.PDF 12.10.7 新增 PDF 表单字段与 XFA 表单支持

Spire.PDF 12.10.7 现已正式发布。该版本新增 Spire.Pdf.Interactive.Forms 命名空间,为 PDF 表单域的创建、读取、修改与导出提供一套统一、完整的 API。同时,扩展了对 XFA 表单的支持,并支持以 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, 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html