Adobe Creative Suite 应用程序(Acrobat、Photoshop、Illustrator 和 InDesign)可通过 JavaScript(一种经应用程序解释和执行的脚本语言)编写扩展脚本。所有四种应用程序都提供相似的整体接口用于配合 JavaScript 工作,尽管每一种应用程序都提供一套不同的 JavaScript 功能来控制应用程序的功能
每一种应用程序的 JavaScript 编程界面都记录在应用程序的软件开发工具包中。软件开发工具包可从 Adobe 官网上获取。Adobe Creative Suite 软件包内含"ExtendScript Toolkit"应用程序,对开发和调试 Adobe Creative Suite 应用程序的 JavaScript 脚本很有帮助。
上面提到的四种应用程序的 Switch 配置程序允许发送一个 JavaScript 脚本到应用程序供应用程序执行。结合 Switch 的内置能力,该功能可对 Adobe Creative Suite 应用程序进行有力的控制。
配置程序定义了相应的应用程序在以下三个连续的阶段要执行的动作:
打开文件并使文件成为当前激活的文档。
在当前激活的文档上执行命令。
保存并关闭当前激活的文档。
每一阶段需要的动作都是单独定义的,并可从以下项中选择:
从以名称排列的内置动作中选择。
从用户提供的脚本(通过浏览 JavaScript 文本文件指定)选择。
选择的动作决定了在继续配置动作时显示哪些下级属性。也就是说,每个选项都有自己特有的一组属性。
下表描述了"使用脚本"选项的属性;内置选项的属性在每个配置程序中单独描述。
下表列出了当每一个动作阶段选择"使用脚本"时该阶段会显示的属性。
属性 |
描述 |
|---|---|
脚本文件 |
含有该阶段应用程序要执行的 JavaScript 脚本的文本文档 |
参数 1 |
第一个要传递到脚本的参数(或为空) |
参数 2 |
第二个要传递到脚本的参数(或为空) |
参数 3 |
第三个要传递到脚本的参数(或为空) |
参数 4 |
第四个要传递到脚本的参数(或为空) |
参数 5 |
第五个要传递到脚本的参数(或为空) |
系统总是显示五个变量,因为没有机制决定脚本需要几个变量。
要编写用户脚本,只需提供在脚本文件主体中需要执行的 JavaScript 语句。若您的脚本发生错误,脚本应该为相应的错误消息设置 $error 变量;否则脚本应该不处理该 $error 变量。下表列出了典型的编码样式。
以下特殊全局参数在您的脚本执行之前已经被定义,这样脚本才可使用变量的值;在一些情况下(见变量描述注释),您的脚本应该设置或更新变量内容。
变量 |
描述 |
|---|---|
$arg1 |
第一个传递到脚本的参数(如无则传递空字符串) |
$arg2 |
第二个传递到脚本的参数(如无则传递空字符串) |
$arg3 |
第三个传递到脚本的参数(如无则传递空字符串) |
$arg4 |
第四个传递到脚本的参数(如无则传递空字符串) |
$arg5 |
第五个传递到脚本的参数(如无则传递空字符串) |
$infile |
输入文件的绝对路径,包括名称和扩展名;该路径在"打开"动作附加的脚本中使用得最多 |
$doc |
当前激活的文档,即"打开"动作打开的文档;$doc 在附加到"打开"动作的脚本中(或"打开"动作失败时)为空 注:
|
$outfolder |
输出文件夹的绝对路径,包括名称和扩展名;该路径在"保存"动作附加的脚本中使用得最多 |
$filename |
输入(和输出)文件的文件名(不含扩展名) |
$extension |
输入文件的文件扩展名,若没有的话,则该变量输入文件 Mac 文件类型的相应文件扩展名 |
$outfiles |
传入的值和该变量无关 若您的脚本被附加到"保存"动作,脚本应将该阵列变量的内容设置为脚本生成的输出文件的绝对路径 |
$jobfolder |
传入的值和该变量无关 若您的脚本被附加到"保存"动作,脚本将该变量的内容设置为以下值:
|
$error |
若执行一个更早的阶段时发生了错误,或准备执行该阶段时发生了错误,该变量含有相应的错误消息,否则变量值为空(不是空字符串;空字符串表示错误确实发生但是未生成有意义的错误消息——该情况为错误操作但也可能发生) 若您的脚本发生错误,脚本应为相应的错误消息设置 $error 变量(即消息是非空字符串);否则脚本不处理该 $error 变量。 注: 若 $error 已经设置,脚本会使工作失败并向"错误"级别的数据输出连接移动工作。若没有错误连接,该工作被移动到问题工作文件夹。
请注意,用户可通过设置 $status 变量决定工作应移动到哪里(错误连接或问题工作文件夹)。有关更多信息,请参阅以下说明。 |
| $status | $status 允许您通过指定错误输出工作的移动目的地来控制错误工作的输出行为。您也可指定在出现关键错误时停止脚本继续处理。 注: 若 $error 为"空",则忽视 $status 的值。
|
以下为附加到命令动作的用户脚本出错时,处理错误的典型编码样式:
if ($error == null)
{
try
{
// statements to be executed by this script
// $doc.ApplicationDependentFunction();
}
catch( e )
{
$error = e.description;
$status = failJob;
// This will move the failed job to Problem Jobs folder. If not set, the
default is the “Error” level data connection.
$doc.closeDoc( Application Specific Parameters );
// close any other resources used in the try block
}
}
<AdobeConfiguratorLog>
<FlowElementName>ConfiguratorFlowElementName</FlowElementName>
<Job>
<Name>NoFontPackage</Name>
<Status>Error</Status>
<StatusMessage>Error Message String</StatusMessage>
<MissingFonts>
<Font>Somora</Font>
<Font>XBAND Rough</Font>
</MissingFonts>
<Job>
</AdobeConfiguratorLog>
以下为处理 Adobe Acrobat 应用程序时的典型编码样式:
// Acrobat is used to make a summary of the annotations resulting in a file that shows you the page
// content and the annotations per page.
// No arguments are required.
if($error == null)
{
try
{
var title = $doc.documentFileName + " summary"
$outfile = $outfolder + '/' + $filename + "_summary.pdf";
$doc.ANsummarize($doc, title, ANSB_Page, null, $outfile, null, false, true, false, false, false, false);
$outfiles.push($outfile);
}
catch(theError)
{
$error = theError;
$doc.closeDoc( {bNoSave : true} );
}
}
$error
有关脚本的更多信息,请参阅 Enfocus 网站文档。