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 по умолчанию.