Если нужно вставить текст в конец какого-то материала, можно использовать следующую конструкцию (листинг 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, ^