# 表单数据处理

表单数据处理是 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 是一个常量枚举,用于指定要导出的文件格式,第二个参数我们没有设定任何属性,这意味着将导出所有的表单数据。

如果您想要导出指定的表单字段,可以设置 fieldNamesisExcludeFields 属性,如下所示:

const doc = pdfViewer.getCurrentPDFDoc();
const form = doc.getPDFForm();
const blob = await form.exportToFile(PDFViewCtrl.commons.FileFormat.json, {
    fieldNames: ['Text Field0', 'Check Box0'],
    isExcludeFields: true
});

在这个示例中,我们设置了 isExcludeFieldstrue,从而排除了 Text Field0Check Box0 这两个字段,其余的字段将被导出。如果您只想导出 Text Field0Check 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 表单中。

如果导入的是 csvtext 格式的数据,则需要确认文件中使用的分隔符。您可以通过设置 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>;

参数说明:

  1. fieldNames: 需要被重置的表单字段名称, 如果为空, 则重置所有表单字段。
  2. 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
)