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

时间:2013-07-02 09:52:51

标签: javascript text acrobat

我正在使用acrobat XI 我试过输出像这样的文本文件

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

这是有效的,但我想提供一个固定路径,并且没有弹出对话框请求用户选择保存路径

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

3 个答案:

答案 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.