Итак, скрипт представлен в листинге 9.7.
Листинг 9.7. Автоматическое размещение рекламы в публикации
// Задаем модульную сетку
rows = 9;
cols = 4;
startR =0;
startC = 0;
// Задаем папку с изображениями myFolder = Folder(myFolder) myPath = myFolder.toString()+'/'
// Получаем список файлов с рекламой и меняем его порядок //на противоположный
myFiles= myFolder.getFiles().reverse))
II Вставляем контейнер для изображений, временно размещаемых на листе -
// исключительно для получения их размеров myRec = арр.activeDocument.rectangles.add()
// Задаем размеры одного модуля - по ним будет определяться положение // рекламных блоков stepX = 67; stepY = 43
// Зазоры между блоками дарХ = 5; gapY = 5
// Создаем массивы для внесения туда ссылок на файлы.
II Каждая ссылка заносится только в свой массив (с учетом размера //и пропорций рекламного макета). for (i=l; i<5; i++) { for (j=l; j<5; j++)
eval('Arr'+i+'1+j+'= new Array()1)
}
// Массив для хранения положения всех возможных рекламных модулей positionA = new Array();
// Массив для хранения размеров рекламы gBA = new Array();
// Массив для хранения свободных и занятых областей myMap = new Array()
for (i=0; i<rows; i++) ( positionA[i] = new Array()
// Создаем карту свободных областей myMap[i] = new Array () for (j=0; j<cols; j++) {
// Задаем координаты каждого рекламного модуля.
// Используем особую нумерацию модулей, позволяющую точно // определить, в каком ряду и какой колонке он находится.
// Первым записываем положение по оси у, потом - по оси х positionA[i][j] = i * stepY + gapY + + parselnt(j * stepX + gapX)
// Заполняем карту нулями (начальное состояние).
// Ноль означает, что модуль свободен. myMap[i][j] =0
}
}
// Выполняем временный импорт всех файлов for (i in myFiles){
pic = File(myFiles[i]).name myRec.place(File(myPath + pic)); img = myRec. images [ 0 ]
// И записываем размеры каждого изображения
gBA[i] = [parselnt (img.geometricBounds[2]-img.geometricBounds[0]), ’b parselnt(img.geometricBounds[3]-img.geometricBounds[1])]
// Сортируем рекламу по размерам.
// Минимальный размер - 1x1, максимальный выбран как 4x4 модуля Создаем столько массивов, сколько имеется типоразмеров рекламы (разных размеров с учетом расположения- горизонтальная/вертикальная) и в каждый заносим соответствующие названия файлов. В название каждого массива добавляем числовой индекс, соответствующий размерам изображений, ссылки на которые добавляются в массив. Например, в массив Агг42 заносим ссылки на рекламу размером 4 модуля по высоте и 2 по ширине, в Агг12 - размером 1 модуль по высоте и 2 в ширину, и т. д.
for (j=l; j<=4; j++) { for (k=l; k<=4; k++){
if (gBA[i] [0] < k* stepY) {
eval('Arr' + parselnt(j + "" + k) + '.push(pic)1)); continue;
>
}
}
}
// После получения размеров рекламных макетов из папки
// временный контейнер удаляем арр.activeDocument.rectangles[0].remove()
// Собственно начало размещения.
// Находим положение рекламы, размещаемой самой первой, findCurrPos()
//В зависимости от размера и пропорций рекламного макета // ищем рекламу размером 4x2 модуля, расположение вертикальное for (i in Arr42){