# 表单数据处理
表单数据处理是 SDK 的一个关键部分,包括从 PDF 表单中导出数据、向表单填写数据以及将数据导出到其他格式等功能。本章节将介绍如何使用这些功能。
# 数据导出
Foxit PDF SDK for Web 支持从 PDF 表单中导出数据到指定的文件格式。支持的格式包括:
xfdf
(XML Forms Data Format)fdf
(Forms Data Format)csv
(Comma-Separated Values)json
(JavaScript Object Notation)text
(Plain Text)xml
(eXtensible Markup Language)
以下是如何使用 exportToFile
(opens new window) 方法的示例:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const blob = await form.exportToFile(PDFViewCtrl.commons.FileFormat.json, {});
在这个示例中,PDFViewCtrl.commons.FileFormat
是一个常量枚举,用于指定要导出的文件格式,第二个参数我们没有设定任何属性,这意味着将导出所有的表单数据。
如果您想要导出指定的表单字段,可以设置 fieldNames
和 isExcludeFields
属性,如下所示:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const blob = await form.exportToFile(PDFViewCtrl.commons.FileFormat.json, {
fieldNames: ['Text Field0', 'Check Box0'],
isExcludeFields: true
});
在这个示例中,我们设置了 isExcludeFields
为 true
,从而排除了 Text Field0
和 Check Box0
这两个字段,其余的字段将被导出。如果您只想导出 Text Field0
和 Check Box0
,则无需设置 isExcludeFields
或者将 isExcludeFields
设置为 false
:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const blob = await form.exportToFile(PDFViewCtrl.commons.FileFormat.json, {
fieldNames: ['Text Field0', 'Check Box0']
});
# 数据导入
Foxit PDF SDK for Web 支持从指定的文件格式导入数据到 PDF 表单中。以下是如何使用 importFromFile
(opens new window) 方法的示例:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const response = await fetch('formData.xfdf');
const xfdfData = await response.blob();
await form.importFromFile(xfdfData, PDFViewCtrl.commons.FileFormat.xfdf);
以上示例展示了如何从一个 XFDF 文件加载数据并将其导入到当前打开的 PDF 表单中。
如果导入的是 csv
或 text
格式的数据,则需要确认文件中使用的分隔符。您可以通过设置 delimiter
参数来指定,默认情况下,csv
文件使用的分隔符为 ,
,text
文件使用的分隔符为 \n
。
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const response = await fetch('formData.csv');
const csvData = await response.blob();
await form.importFromFile(csvData, PDFViewCtrl.commons.FileFormat.csv, {
delimiter: ','
});
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const response = await fetch('formData.txt');
const textData = await response.blob();
await form.importFromFile(textData, PDFViewCtrl.commons.FileFormat.text, {
delimiter: '\n'
});
# 重置表单
Foxit PDF SDK for Web 提供了 PDFForm.resetForm
(opens new window) 接口,用于将表单字段值重置为默认值。
PDFForm.resetForm
(opens new window) 方法定义:
async resetForm(fieldNames: string[], isExclude: boolean = false): Promise<void>;
参数说明:
fieldNames
: 需要被重置的表单字段名称, 如果为空, 则重置所有表单字段。isExclude
: 是否要排除在fieldNames
列表中指定的字段。默认值为true
,表示fieldNames
列表中的字段将不会被重置。如果设置为false
, 则fieldNames
列表中的字段将会被重置。
如果您想要重置特定的表单字段,可以通过设置 fieldNames
参数为需要重置的字段名称,并且将 isExclude
参数设为 false
。以下是一个使用示例:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
await form.resetForm(
['Text Field0', 'Combo Box0'],
false
)
如果您想要重置所有表单字段,可以将 fieldNames
指定为空数组 []
, 并且将 isExclude
指定为 true
,示例如下:
const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
await form.resetForm(
[],
true
)
← PDF 表单基础概念介绍 表单交互模式 →