Итак, скрипт представлен в листинге 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){


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