Итак, фактически нам нужно выполнить всего четыре шага в такой последовательности (листинг 5.17):

1. Убедиться, что выделен именно текстовый фрейм.

2. Продублировать фрейм, который впоследствии будет удален.

3. Удалить текст из удаляемого фрейма.

4. Удалить сам фрейм.

Ранее мы уже проводили проверку типа выделения объекта (см. листинг 5.1) и в несколько модернизированном виде применим его в нашем случае. В принципе, такие часто используемые фрагменты кода можно применять как библиотечные для работы с текстовыми объектами: myText дает ссылку на выделенный текст, myTextFrame- на фрейм, в котором он содержится.

? Листинг 5.17. Вычленение активного фрейма из цепочки с сохранением текста

var myObjectList = new Array;

// Начальный фрагмент сценария switch(арр.selection[0].constructor.name)( case "TextFrame”:

myText = [app.selection[0]]; break; default:

if(app.selection.length == 1)(

switch(app.selection[0].constructor.name)( case "Text": case "InsertionPoint": case "Character": case "Word": case "Line": case "TextStyleRange": case "Paragraph": case "TextColumn":

myTextFrame = [app.selection[i].parentTextFrames[0]]; break;

)

} else (

alert ("В выделении нет ни текста, ни фрейма с текстом")

}

break;

}

II Проверяем, чтобы выделенный фрейм не являлся последним в цепочке,

// а потом воспроизводим описанные выше шаги, if ( (myTextFrame. next Frame != null) &&

(myTextFrame.previousFrame ! = null))

{

myNewFrame - myTextFrame.duplicate(); myTextFrame.texts[0].remove(); myTextFrame.remove();

)

5.10. Поиск переполнения

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

[ Листинг 5.18. Поиск переполнения текстовых фреймов (вариант 1}

var overflowArray = new Array(); var pages =

myDocument = app.activeDocument

if (myDocument.length < 1)

alert ("Ни один документ не открыт!"); else {

if (myDocument.textFrames.length < 1)

alert("В публикации нет ни одного текстового фрейма!"); else {

for(i = 0; i < myDocument .pages. length; i-t +) (

for(j = 0; j < myDocument.pages[i).textFiames.length; j-n-)

{

if(myDocument.pages[i].textFrames[jj.overflows - true) overflowArray.push(myDocument.pages[i].name);

}

}

if(overflowArray.length > 0) {

pages = overflowArray.toString()

}

alert(Количество переполненных фреймов: " +Ч>

overflowArray.length + "\n" + "На страницах: " + pages);

} else

alert("Переполнений нет!")

}

Вначале - проверка того, что хотя бы один документ в InDesign открыт (часто такой прием грубо называют "защитой от дурака", что, не смотря на все побочные факторы, прекрасно характеризует его действие):


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