【问题标题】:Adobe Illustrator JavaScript - Applying a dataset to each open document in a loopAdobe Illustrator JavaScript - 在循环中将数据集应用于每个打开的文档
【发布时间】:2018-06-04 23:24:41
【问题描述】:

我编写了一个简单的脚本来在 Adob​​e Illustrator 中打开两个文档(文件 -> 脚本)并将一些命令应用于这些文档。

脚本的目的;在 Illustrator 中未打开任何文档时,脚本将:

  1. 打开所需文件。
  2. 将 XML 变量库加载到这些文档中。
  3. 显示该库中的数据集(只有一个数据集)。
  4. 将文件保存在给定位置。
  5. 关闭文件。

脚本:

try
{
    var doc_1 = open(File("C:/file1.ai"));
    var doc_2 = open(File("C:/file2.ai"));

    var sourceDoc;
    var targetFile; 

    var options = new IllustratorSaveOptions();

    for (var i = 0; i < app.documents.length; i++ ) 
    {
        sourceDoc = app.documents[i];

        sourceDoc.importVariables(new File("C:/variables.xml"));

        sourceDoc.dataSets[0].display();

        targetFile = new File("C:/output" + sourceDoc.name + '.ai');

        sourceDoc.saveAs( targetFile, options );

        sourceDoc.close();
    }
}
catch(err)
{
    alert(err);
}

此代码仅适用于上次打开的文件 (file2.ai)。 file1.ai 从未被触及,几乎就像没有循环一样。

这可能是什么原因造成的?

【问题讨论】:

    标签: javascript scripting adobe adobe-illustrator


    【解决方案1】:

    关闭循环中的第一个文件时,您刚刚将app.documents[1] 移动到app.documents[0]

    你希望 top 循环遍历它们

    试试你的循环

    for (var i = app.documents.length; i >0 ; i-- ) 
    

    【讨论】:

    • 这就是答案。在循环中一个一个地保存文件时,我也注意到了同样的行为。您必须以相反的顺序保存它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多