我收到了一份带有表格的PDF文件。表单不格式化为表格。我的要求是提取表单字段值,并将它们写入CSV文件,该文件可以导入Excel。我尝试使用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:控制台:执行“
理想情况下,我不想使用在线第三方工具来执行此操作,因为数据非常敏感。但如果您有任何建议,请告诉我。理想的输出将是一个CSV文件,最终业务用户可以在Excel中打开该文件以查看她选择的电子表格格式。
以前有人这样做过吗?也可以听取任何替代解决方案。提前谢谢!
答案 0 :(得分:1)
您的代码应该有效,请确保在控制台中运行时选择整个代码。
出于安全原因,您在没有用户交互的情况下可以从Acrobat输出的内容受到限制。有一个很好的讨论可以从PDF here输出什么,如果你还没有,请务必查看exportDataObject()
中可能的内容。 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,并为用户提供文件保存对话框。