使用 JavaScript 提取 PDF 表单数据并写入 CSV 文件

Extract PDF Form Data Using JavaScript and write to CSV File

我收到了一个带有表格的 PDF 文件。该表单 而非 格式为 table。我的要求是提取表单字段值,并将它们写入可以导入到 Excel 的 CSV 文件。我曾尝试在 Acrobat Pro 中使用自动 "Merge data files to Spreadsheet" 菜单项,但输出包括标签和表单字段值。我主要只对表单字段值感兴趣。

我想使用 JavaScript 提取表单数据,并指导 JavaScript 如何编写 CSV(因为我知道最终电子表格应该是什么样子)。我已经提取了表单字段:

this.getField("Today_s_Date").value;

然后 post: How to write a text file in Acrobat Javascript ,我尝试使用以下方式写入 CSV:

var cMyC = "abc"; var doc = this.createDataObject({cName: "test.txt", cValue: cMyC});

但我收到以下错误:

"SyntaxError:语法错误 1:Console:Exec"

理想情况下,我不想使用在线第三方工具来执行此操作,因为数据很敏感。但是,如果您有任何建议,请告诉我。理想的输出将是一个 CSV 文件,最终业务用户可以在 Excel 中打开该文件以查看她选择的电子表格格式。

以前有人做过吗?也愿意听取任何替代解决方案。提前致谢!

您的代码应该可以工作,请确保您在 运行 在控制台中选择了整个代码。

出于安全原因,您在没有用户交互的情况下可以从 Acrobat 输出的内容受到限制。关于 PDF here, and if you haven't already, be sure to check out what's possible with exportDataObject() in the reference.

可以输出什么的讨论很好

一个入门示例 -- 您可以在表单上放置一个按钮,该按钮将遍历表单中的每个字段,将它们添加到一个数组中,然后该数组可以输出为 csv。

类似于:

var fieldValues = [];

for (var i = 0; i < this.numFields; i++)
  fieldValues.push(this.getField(this.getNthFieldName(i)).value);

this.createDataObject('output.csv', fieldValues.join());
this.exportDataObject({ cName:'output.csv', nLaunch:'2'});

在此示例中,.csv 将由计算机上的默认 csv 程序作为临时文件打开。或者,您可以省略 nLaunch,并为用户提供一个文件保存对话框。