Adobe Illustrator JavaScript - 将数据集应用于循环中的每个打开的文档

时间:2018-06-03 10:47:28

标签: javascript scripting adobe adobe-illustrator

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

脚本的目的;如果没有在Illustrator中打开文档,脚本将:

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

    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,几乎就像没有循环一样。

    导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

关闭循环中的第一个文件时,您只需将app.documents[1]移至app.documents[0]

你想要向后循环它们

尝试使用

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