我正在使用acrobat XI 我试过输出像这样的文本文件
var cMyC = "abc";
var doc = this.createDataObject({cName: "test.txt", cValue: cMyC});
this.exportDataObject({cName: "test.txt", nLaunch:0});
这是有效的,但我想提供一个固定路径,并且没有弹出对话框请求用户选择保存路径
有什么方法可以解决这个问题吗?感谢
答案 0 :(得分:6)
将文件写入用户本地磁盘的所有Acrobat JavaScript函数都存在安全风险,因此对其使用存在一些限制。这些功能包括doc.saveAs()
和所有数据导出功能,如doc.exportAsFDF()
。
正如您可以阅读here:
Acrobat为我们提供了两种操作模式 函数 - 具有路径且没有路径。如果没有路径参数 提供给该功能的Acrobat显示文件浏览器对话框。该 文件浏览器对话框使用户可以控制数据的保存方式 他们的系统。如果为函数提供了路径,则没有对话框 显示并静默处理操作,即用户 不一定意识到数据已保存到硬盘中。 这是一个安全问题,因此要在静默中使用其中一个功能 模式,该功能必须从特权上下文执行。这个 表示代码必须位于受信任位置。例如,代码 从控制台窗口,批处理或经过认证的PDF执行 很有特权。当任何这些函数与路径一起使用时 参数并在非特权上下文中执行,Acrobat将抛出 一个例外。这个限制背后的原因是,如果代码 不能信任,那么用户必须专门选择文件 位置。
将数据保存到用户系统的另一个限制是 路径规范必须是安全路径。一条安全的道路就是这样 不指向用户硬盘驱动器上的受限位置或一个 这可能会带来安全风险。这些例子受到限制 位置是系统文件夹和任何硬盘驱动器的根文件夹。 可能受限制的其他文件夹取决于操作 系统和Acrobat开发人员的敏感性。既不是 记录良好,因此最好仔细使用这些功能。
关于“安全路径”,Acrobat JS API doc.saveAS
method documentation指出:
Acrobat 6.0引入了JavaScript安全路径的概念 根据传递的路径将数据写入本地硬盘驱动器的方法 它的一个参数。路径不能指向系统 关键文件夹,例如root,windows或系统目录。一个 路径也受其他未指定的测试。对于很多方法, 文件名必须具有适合于该数据类型的扩展名 是要保存。某些方法可能具有无覆盖限制。 这些附加限制在文档中说明。 通常,当判断路径不安全时,NotAllowedError 抛出异常(请参阅错误对象),方法失败。
您肯定无法使用exportDataObject
方法,因为它没有path
参数,因为您还可以阅读here:
“cName”参数是必需输入并指定特定输入 将导出的文件附件。请注意,没有路径 参数。实际上有一个“cPath”输入到这个函数,但它 不再有效。如果您尝试在此函数中使用路径,它将会 失败并抛出异常。什么情况无关紧要 函数被调用,因为删除了“cPath”参数 所有用法。
进一步参考:
答案 1 :(得分: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
测试
答案 2 :(得分:2)
不可能。出于安全原因,不允许自动保存文件。
如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.