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))


⇐ вернуться назад | | далее ⇒