fname - ссылка на импортируемый файл, которая может быть получена через диалоговое окно.
9.1. Управление связями
Рассмотрим, как определяется связь изображений с оригиналами на диске.
Как правило, в публикациях некоторое количество рекламы повторяется из номера в номер, а после сдачи текущего номера вся использованная реклама архивируется в отдельную папку. Соответственно для сбора всей использованной рекламы потребуется, во-первых, просмотр папки Links, полученной после выполнения операции Collect For Output, и ручной отбор только рекламы, и, во-вторых, дополнительный поиск рекламных макетов из других номеров. Попробуем переложить задачу на "плечи" машины, создав аналог операции Collect For Output и расширив ее нашими потребностями.
Для того чтобы скрипт мог отбирать только рекламу, название рекламных -файлов должно как-то отличаться от других изображений, либо просто находиться в отдельной папке, например, Реклама. В таком случае скрипт будет просматривать все связи и, если найдет в пути к файлу слово "Реклама" или же какой-то другой флаг (ключевое слово, позволяющее однозначно идентифицировать файл рекламного содержания), будет копировать данный файл в новое место (листинг 9.2),
Листинг 9.2. Отбор рекламы для публикации
aD = арр.activeDocument
myFolder = Folder.selectDialog("Select picture folder", aD.filePath) for (i =0; i < aD.links.length; i++) {
1 = aD.links[i];
if (1.status == LinkStatus.linkMissing) continue;
if ((1.status = LinkStatus.linkEmbedded))
1.unembed();
myFolder = Folder(aD.links[i].filePath) if(myFolder.toString().search(/\/Реклама\// )!=-1) il (myFolder.toString().search(/myFlag/)!=-1)
(
myFile = new File (aD.links[i].filePath); myNewFile = new File (myFolder + myFile.name);
myFile.rename(myNewFile)
}
Скрипт очень компактен и прост. В самом начале пользователю предлагается ввести название папки, в которую будет выполняться копирование найденных изображений, после чего просматриваются все изображения в публикации (вернее, не сами изображения, а только существующие связи с изображениями) и проверяются их свойства.
Если связь с оригиналом по каким-то причинам потеряна (LinkStatus. linkMissing), то пропускаем соответствующее этой связи изображение и продолжаем просмотр; если изображение было внедрено в публикацию (binkstatus. linkEmbedded), его из публикации исключаем, устанавливая СВЯЗЬ С оригиналом (unembed () ).
Затем проверяем наличие в названии полного пути (myFolder) либо ключевого слова "/Реклама/" (с наклонными слэшами- признак папки), либо вымышленного флага myFiag. В случае успеха получаем название файла (links [i] .filePath), после чего создаем новый путь к будущему месторасположению изображения и производим копирование. Обратите внимание, как производится операция копирования: фактически она сводится к переименованию файла.
В случае, если связи потребуется обновить, достаточно заменить последнюю строку на следующий фрагмент:
if (myFile.rename(myNewFile))