1. Создание объекта-контейнера.

2. Расположение его в нужном месте.

3. Вставка э него изображения.

4. При необходимости- дополнительные операции: подгонка размеров контейнера под размеры изображения, центровка изображения в контейнере.

Создание прямоугольника происходит аналогично добавлению любого другого объекта, только в данном случае нужно использовать коллекцию

rectangles:

newRectangle = арр.activeDocument.rectangles.add()

Разумеется, можно сразу же задать его габаритные размеры - или же отложить это до помещения в него изображения. При создании таким образом прямоугольник помещается на первую страницу публикации в левый угол с размерами по умолчанию.

Расположение в конкретном месте не должно вызвать никаких проблем - в этом поможет метод move о, а как определить необходимое место- уже рассматривалось ранее.

Вставка изображения выполняется методом placet), которому в качестве параметра указывается ссылка на файл.

Среди основных параметров изображения- его габаритные размеры (доступ - через родителя rectangle), цветовая модель, тип, а также текущее состояние связи с оригиналом (status). Доступ ко всем связям изображений в публикации происходит через свойство activeDocument.links, соответствен-но, все параметры связи конкретного изображения хранятся в объекте Link.

Импортированное изображение может как сохранять связь с оригиналом на диске, так И быть автономным (свойство linkEmbedded=true). В случае, если по каким-то причинам оригинал был перемещен в другое место и InDesign не может его найти, автоматически устанавливается флаг iinkMissing=true.

Рассмотрим пример, в котором изображение импортируется в публикацию с размещением в абзаце, где находится курсор (листинг 9.1). Если размеры изображения меньше некоторых минимальных значений по ширине и высоте, центрируем его по размеру контейнера (FitOptions.centerContent), если же больше - расширяем контейнер таким образом, чтобы все его содержимое стало ВИДИМЫМ (FitOptions.frameToContent).

Листинг 9.1. Импорт изображения

mySelection = арр.selection[0] ; if(mySelection != 'undefined')

{

myParagraph = mySelection.paragraphs[0];

myParagraph.rectangles.add({fillColor:

app.activeDocument.swatches[0], strokeWeigth:0}) myparagraph.recompose();

with (myParagraph.rectangles[0])

{

place(File(fname); with (allGraphics[0]){

myWidth = geometricBounds[3] - geometricBounds[1] ; myHeight = geometricBounds[2] - geometricBounds[0];

}

if( (myWidth < min_width) && (myHeight < min_height) )

{

geometricBounds = [geometricBounds [0],

geometricBounds [1], geometricBounds [0] + myHeight, geometricBounds[1] + minWidth]; fit (FitOptions.centerContent) ;

} else {

fit(FitOptions.frameToContent);

}

}

В данном случае для доступа к изображению использовалась конструкция allGraphics, поскольку мы заранее не знаем, какого типа изображение было импортировано (в InDesign существуют отдельные коллекции для каждого типа векторных изображений, для растровых- images, а наиболее универсальный вариант- graphics или allGraphics). Кроме того, при создании контейнера мы изменили его свойства: присвоили заливку белым цветом, а окантовку убрали, чтобы изменить значения, которые устанавливает InDesign по умолчанию.


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