Листинг 11.14. Открытие файла с путями
linksFile = File('myFolder/$$links.txt') do{
linksFile.open(1r') myFilePath = linksFile.readln() otherLines = linksFile.read() linksFile.close() app.open(myFilePath)
В случае, если в предыдущей сессии в файле была обнаружена и исправлена ошибка, но по какой-то причине документ не был закрыт (а значит, гарантированно сохранен), возможна коллизия. Чтобы быть уверенным в том, что изменения были сохранены, мы принудительно закрываем файл. Если он сохранен не был, Illustrator предложит сделать это, что нам и нужно, if(app.documents.length>0) app.documents[0].close()
Отключаем отображение диалоговых окон (часто Illustrator выдает предупреждения, которые в нашем случае не принципиальны) и открываем первый файл из списка в файле SSlinks.txt, после чего сразу же выдачу сообщений разрешаем - а как же иначе мы узнаем о ошибках, если их обнаружит скрипт (листинг 11.15)?
Листинг 11.15. Открытие файла из списка в файле $$links.txt
app.userlnteractionLevel^ UserlnteractionLevel.DONTDISPIAYALERTS; app.open(File(myFilePath))
app.userInteractionLevel= UserlnteractionLevel.DISPLAYALERTS; var aD = app.documents[0]; Далее идет собственно проверка текущего документа (листинг 11.16). После успешного ее прохождения иллюстрацией (err==faise) из файла со связями удаляем самую первую строку. Это происходит после успешной проверки каждой иллюстрации. Удаление реализовано как перезапись текущего содержимого файла без первой строки (otherLines). В результате, если ошибок не возникло, в конце проверки содержимое файла станет пустым (File (linksF) . length==0).
Листинг 11И 6. Проверка текущего документа я. j
AI_preflight(); if(!err)( f.open('w') f.write(otherLines) f .close () aD. close () ;
}
} while (File(linksF).length!=0 && !err)
В отсутствие ошибок последний шаг на стороне Illustrator- передача управления Bridge для возврата в InDesign (листинг 11.17).
.......................................-’-7>....................................................................;..............•;...........р
; Листинг11.17-Передача управления Bridge для возврата в InDesign
if (! err) (
f = File ('myFolder/Preflight_Check__ID_final. jsx' ) f.open(1r1)
scriptContent = f.read(); f .close () ;
bt = new BridgeTalk; bt.target = 1 indesign1; bt.body = scriptContent; bt.send();
}
Общая картина достаточно проста, рассмотрим собственно проверку, выполняемую в Illustrator (листинг 11.18).
! Листинг 11.18. Проверка в Illustrator
function AIjpreflight()(
// Если остался редактируемый текст if (aD.textFrames.length>0)(
for (var i=0; i<aD.textFrames.length; i++){ aD.textFrames[i].selected=true; errObj.et = 1;
}
}
for(i=0; i<aD.pathItems.length; i++){ var pgl = aD.pathltems[i];
// Проверяем наличие надпечати у заливки и окантовки if ((pgl.filled && pgl.fillOverprint) II 4?
(pgl.stroked && pgl.strokeOverprint)) {
errObj.op = 1; pgl.selected = true;
}
// Проверяем режимы наложения - возможно, понадобится // сведение (flattening) if(pgl.blendingMode!=BlendModes.NORMAL){ errObj.bm=l; pgl.selected = true;