Объектная модель InDesign

Рис. 2.1. Объектная модель InDesign

Объекты, которые чаще всего используются, - публикация (Document), материал (story, цепочка связанных между собой текстовых блоков), поскольку он является непосредственным родителем для текстового содержимого (words, characters), а также текстовый блок (textFrame).

Как уже ранее отмечалось, объект, над которым будет производиться действие, нужно указывать однозначно. Однозначность достигается перечислени ем всей вышестоящей иерархии воздействуемого объекта: например, название документа, номер слоя, номер текстовой цепочки, номер страницы и т. д. вплоть до самого объекта.

Для того чтобы спуститься по иерархии до конкретного объекта, перечисляют всю вышестоящую цепочку объектов, разделяя каждый уровень точкой (.). Например, чтобы получить содержимое четвертого фрейма на второй странице открытого документа, нужно использовать такую конструкцию:

application.documents[0].pages[1],textFrames[3].contents

Скриптинг дает широкие возможности, однако не забывайте, что вам не все дозволено - например, порядок перечисления элементов не менее важен, и все попытки изменения своей объектной модели InDesign будет жестко пресекать.

Коллекция документов- набор всех открытых на данный момент публикаций. Соответственно к текущей публикации можно обратиться через app. documents [0], предусмотрено и более удобное название - app.activeDocument. Материалов, как правило, в публикации несколько, поэтому доступ К НИМ Возможен через app.activeDocument.stories[index], ИТ. д.

Новое в InDesign Creative Suite 3_

В связи со значительными изменениями, произошедшими в Creative Suite, писать скрипты стало гораздо проще. Одно из полезных нововведений - встроенный Object Browser, который помогает ориентироваться во всем многообразии иерархических связей InDesign. В то же время, во всяком случае, на данный момент, его использование малоэффективно, а вот включение интерактивного InDesign Object Library :- настоящая находка.

Объектная модель InDesign отображается в любом из приложений, которое выбрано для редактирования скриптов.

Для того чтобы постоянно не повторять всю вышестоящую иерархию и тем самым повысить читаемость кода, рекомендуется использовать сокращенный доступ к объектам:

myDocument = app.documents[0] myPage = myDocument.pages[2]

Данной записью мы переменной myDocument присваиваем ссылку на объект app.documents [0], а переменной myPage - ссылку на третью страницу.

Соответственно предыдущую запись

application.documents[0].pages[l].textFrames[3].contents теперь можно переписать как

myPage.textFrames[3].contents

Попробуем использовать уже имеющиеся знания для решения первой практической задачи- определения номера текущей страницы. Если внимательно просмотреть объектную модель, в ней можно обнаружить объект activewindow, среди свойств которого есть указатель на текущую страницу - activePage, у которого, в свою очередь, имеется свойство паше, являющееся ее номером, что нам и нужно. Таким образом, можно записать:

my_Current_page = арр.activeWindow.activePage.name


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