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

dgp*_*dgp 5 javascript forms csv pdf acrobat

我收到了一份带有表格的 PDF 文件。该表单格式化为表格。我的要求是提取表单字段值,并将其写入可导入 Excel 的 CSV 文件。我尝试使用 Acrobat Pro 中的自动“将数据文件合并到电子表格”菜单项,但输出包括标签和表单字段值。我主要对表单字段值感兴趣。

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

this.getField("Today_s_Date").value;

在这篇文章:How to write a text file in Acrobat Javascript之后,我尝试使用以下方法写入 CSV:

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

但我收到以下错误:

“SyntaxError:语法错误 1:控制台:Exec”

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

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

jss*_*jss 4

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

出于安全原因,无需用户交互即可从 Acrobat 输出的内容受到限制。这里对 PDF 的输出内容进行了很好的讨论,如果您还没有讨论过,请务必查看参考资料exportDataObject()中的内容。

一个让您继续前进的示例——您可以在表单上放置一个按钮,该按钮将迭代表单中的每个字段,将它们添加到一个数组中,然后该数组可以作为 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'});
Run Code Online (Sandbox Code Playgroud)

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