Если нужно вставить текст в конец какого-то материала, можно использовать следующую конструкцию (листинг 5.4):

insertionPoints.items (-1) .contents Листинг 5.4. Пример использования свойства itbras(-l)

myTextFrame.parentStory.insertionPoints.items(-1).contents = "Привет"; myTextFrame.parentStory.insertionPoints.items(-1).contents = "\r"; myTextFrame.parentStory.insertionPoints.items(-1).contents = "Как дела"; Коллекция insertionPoints определяет возможные места вставки, a items (-1) указывает на последний элемент в коллекции - это более удобно, чем использовать непосредственную индексацию (через []): так, обозначение

items (-1) В данном случае заменило myTextFrame.parentStory. insertionPoints.length-i. В результате работы скрипта получим текст: Привет Как дела

5.4. Замена текста

Замена одного фрагмента текста на другой проводится аналогично операции добавления текста, только в таком случае ранее стоявший меняется на новый. Скрипт из листинга 5.5 иллюстрирует замену одного слова на целую фразу путем замены содержимого соответствующего объекта.

| Листинг 5.5. Замена слова фразой

// Создаем новый документ

var myDocument = app.documents.add();

// Устанавливаем единицы измерения на пункты myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points; myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;

// Создаем текстовый фрейм на первой странице.

// Сразу же задаем его размеры и содержание var myTextFrame =

myDocument.pages f0].textFrames.add(4>

{geometricBounds:[72, 72, 288, 288],^ contents:"This is some example text."});

// Производим замену третьего слова на целую фразу myTextFrame.parentstory.words[2].contents = "этот текст заметал 'Ъ первоначально находившееся здесь слово"; А как происходит замена текста целого абзаца, показано в листинге 5.6.

Листинг 5.6. Замена абзаца

// Создаем новый документ

var myDocument = app.documents.add();

// Устанавливаем единицы измерения на пункты myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points; myDocument.viewPreferences.verticalMeasurementUnits =

MeasurementUnits.points;

II Создаем текстовый фрейм на первой странице yar myTextFrame = Ъ

myDocument .pages [0] . textFrames. add (Ч>

(geometricBounds:[72, 72, 288, 288],Ъ contents:"Paragraph 1.\rParagraph 2.\rParagraph 3.\r"}); Заменим содержимое второго абзаца.

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

var myStory = myTextFrame.parentStory var myParagraph = myStory.paragraphs[1]

II Чтобы удалить содержимое строки без последнего символа,

II используем метод itemByRange:

var myStartCharacter = myParagraph.characters[0] ; var myEndCharacter = myParagraph.characters[-2]; myTextFrame.texts.itemByRange(myStartCharacter, ^


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