Adobe Illustrator JavaScript - Применение набора данных к каждому открытому документу в цикле - PullRequest
0 голосов
/ 03 июня 2018

Я написал простой скрипт для открытия двух документов в Adobe 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 никогда не затрагивается, почти как если бы петли не было.

Что может быть причиной этого?

1 Ответ

0 голосов
/ 04 июня 2018

При закрытии первого файла в цикле, который вы только что переместили app.documents[1] в app.documents[0]

Вы хотите, чтобы верхний цикл проходил через них назад

Попробуйте свой цикл с

for (var i = app.documents.length; i >0 ; i-- ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...