mySelection = app.selection[0] myStory = mySelection.parentStory

И поскольку нас интересует его содержимое, то:

myStoryContents = myStory.contents

Затем получаем блок текста от самого начала текста до точки вставки, для чего используем JavaScript-функцию substring!). У нее два параметра- ин дексы начального и конечного элементов. Как получить индекс места, где стоит курсор, мы уже рассматривали ранее. Соответственно получаем:

mySelection.parentstory.contents.substring(0, mySelection[0].index)

Разбиваем строку на абзацы. Метод split о имеет единственный параметр - символ, по которому будет разделяться строка (в нашем случае строкой будет весь текст - от начала и до точки вставки). Символ нового абзаца имеет обозначение ' \ г':

mySelection.parentStory.contents.substring(О, mySelection.index).split('\r')

Последний шаг- определяем длину получившегося массива. С учетом того, что нам нужно определить индекс текущего абзаца, из полученного значения нам следует вычесть I. В конечном счете получаем:

currentParagraphlndex = mySelection.parentStory.contents.substring(0, mySelection.index).split('\r').length - 1

Таким образом, индекс абзаца можно получить всего одной строчкой. Соответственно обращение к предыдущему абзацу будет иметь вид:

previousParagraph = mySelection.paragraphs[currentParagraphlndex-l], а к десятому перед ним

nextParagraph = mySelection.paragraphs[currentParagraphIndex+10]

И т. д.

5.3. Добавление текста

Для доступа к содержимому текста (не важно, при какой именно операции - добавление, удаление, создание текста) используют свойство фрейма

contents.

Рассмотрим листинг 5.3.

Листинг 5.3. Добавление фрейма с текстом

if(арр.documents.length==0) арр. documents. add () ; myDocument = app.documents[0] firstPage = myDocument.pages[0] with (firstPage)(

textFrames. add ({geometricBounds: Array (0, 0, "10 mrn","10 mm"), contents: "Hello, world!"});

with(textFrames[0]){ if (overflows) {

fit(fitOptions.FrameToContent)

}

}

}

Сначала создаем на первой странице текстовый фрейм при помощи уже известной конструкции add ({}). InDesign ExtendScript позволяет в момент создания нового объекта задать его свойства. В данном случае устанавливаем габаритные размеры фрейма (они определяются двумя точками - левой верхней и правой нижней; соответственно, их нужно передать в виде массива) и заодно вписываем в него наш текст (параметры разделяются запятыми, а назначаются через двоеточие). Габариты указаны в текущих значениях (которые выставлены в InDesign 110 умолчанию для всех создаваемых документов). Для задания точных значений можно в начале скрипта их переопределить, но в данном случае будет проще указать их в явном виде - "10 mm".

Поскольку мы не знаем параметров стиля по умолчанию, существует вероятность того, что текст полностью разместиться в текстовом фрейме заданных нами размеров не сможет. Поэтому последним шагом мы проверяем свойство переполнения фрейма (overflows) и, если так оно и есть, используем очень удобный метод увеличения размеров контейнера по размерам его содержимого fit (fitOptions.FrameToContent) (аналогичный метод существует и у изображений).


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