如何在Acrobat Javascript中编写文本文件

10

我正在使用Acrobat XI。 我尝试将文本文件导出为以下格式:

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

这个功能目前可以使用,但我希望提供一个固定的路径,并且不弹出对话框要求用户选择保存路径

有没有什么方法可以解决这个问题?谢谢

3个回答

7
所有写入用户本地磁盘的Acrobat JavaScript函数都存在安全风险,因此对它们的使用有一些限制。这些函数包括 doc.saveAs() 和所有数据导出函数,例如 doc.exportAsFDF()

您可以在这里阅读到相关信息:
Acrobat为我们提供了两种操作模式——带路径和不带路径。如果函数没有提供路径参数,Acrobat会显示一个文件浏览器对话框。文件浏览器对话框使用户可以控制如何将数据保存到他们的系统中。如果提供了路径,则不会显示对话框,并且操作会被静默处理,即用户不一定知道数据已保存到他们的硬盘驱动器上。这是一个安全问题,因此要在静默模式下使用这些功能,必须从特权上下文执行该函数。这意味着代码必须驻留在受信任的位置。例如,从控制台窗口、批处理或经过认证的PDF执行的代码是特权的。当使用任何这些函数与路径参数并在非特权上下文中执行时,Acrobat会抛出异常。这个限制的原因是,如果代码不能被信任,那么用户必须明确选择文件位置。
另一个保存数据到用户系统的限制是,路径规范必须是安全路径。安全路径指的是不指向用户硬盘驱动器上的受限位置或可能构成安全风险的位置。这些受限位置的示例是系统文件夹和任何硬盘驱动器的根文件夹。其他可能受限的文件夹取决于操作系统和Acrobat开发人员的敏感性。两者都没有很好的文档记录,所以最好小心使用这些功能。
关于"Safe Paths",Acrobat JS API的doc.saveAS方法文档声明:
Acrobat 6.0引入了JavaScript方法的安全路径概念,该方法根据一个参数传递的路径将数据写入本地硬盘。路径不能指向系统关键文件夹,例如根目录、Windows或系统目录。路径还要经过其他未指定的测试。对于许多方法,文件名必须具有适合保存的数据类型的扩展名。某些方法可能有不允许覆盖的限制。这些额外的限制在文档中有说明。通常,当判断路径为不安全时,会抛出NotAllowedError异常(请参阅Error对象),方法失败。
当然,你不能使用 exportDataObject 方法来完成它,因为它没有 path 参数,这里也可以阅读 此处

"cName" 参数是必需的输入,指定将导出的特定文件附件。请注意,没有路径参数。实际上,该函数中有一个 "cPath" 输入,但它不再有效。如果您尝试在此函数中使用路径,它将失败并抛出异常。无论从哪个上下文调用该函数,因为 "cPath" 参数已从所有用法中删除,所以都不重要。

更多参考资料:


感谢提供信息!我已经尝试使用Doc.exportAsText,但它根本不起作用。准确地说:1)如何创建文本对象,如何将其写入文本文件?谢谢。 - user782104
我已经尝试了创建报告、创建数据对象,但都不能保存到文本文件中。 - user782104

4
以下是使用 doc.exportAsText 输出到固定路径文本文件的方法:

步骤如下:

// set up output text
var TEMP_FIELD_NAME = "testHeader"
var textValue = "test";
// add a temporary text field
var f = this.addField(TEMP_FIELD_NAME, "text", 0, [30,30,100,20]);
f.value = textValue;
// export field name and value to defined file
this.exportAsText({aFields: TEMP_FIELD_NAME, cPath: "test-text.txt"});
// remove text field
this.removeField(TEMP_FIELD_NAME);

生成的文本文件将有两行内容:
testHeader test

3

不可能。出于安全原因,自动保存文件是不允许的。

根据 SDK 所述:

Beginning with Acrobat 6.0, if the parameter cDIPath is non-null, a NotAllowedError  exception is thrown and the method fails.
If cDIPath is not passed to this method, a file selection dialog box opens to allow the user to select a save path for the embedded data object.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接