// Выделение конкретного фрейма document.select(myFrame); Таким образом, полный листинг будет выглядеть гак, как представлено в листинге 5.21.

Листинг 5.21. Полный текст скрипта, обрабатывающего переполнение ‘ фреймов

var myStories = арр.documents[0].stories lastFrames = [] overflowArray = [] overflowPages = []

for(var i = 0; i < myStories.length; i++) {

if (myStories[i].overflows)(

lastFrame = myStories[i].textFrames.lastltem() overflowPage = lastFrame.parent

lastFrames.push(lastFrame) overflowPages.push(overflowPage) overflowArray.push(overflowPage.name) ;

)

}

dig = app.dialogs.add({name: " Поиск фреймов с переполнением", 'З?

canCancel:true}); column = dig.dialogColumns.add(); row = column.dialogRows.add();

row.staticTexts.add({staticLabel:"Выберите страницу, в которой переполнение, и нажмите ОК для перехода на нее"});

row = column.dialogRows.addO;

dropdown = row.dropdowns.add( {minWidth:50, stri ngList: overf lowArray, 'З? selectedlndex:0}};

if (dig.show()){

document.layoutWindows[0].activePage = overflowPages[dropdown.selectedlndex];

document. select (lastFr-ames [dropdown, selectedlndex] ) ;

}

dig.destroy(); Массив overflowPaqes был введен ПО той причине, что объектом activePage может быть только страница (сам объект, а не ее помер), поэтому для удобства пользователя мы отображаем в диалоговом окне (рис. 5.3) номера страниц (из массива cverflowPageNumbers), а в InDesign передаем сами объекты (из

overf lowPages).

Вот как выглядит диалоговое окно с результатами проверки.

Рис. 5.3. Вот как выглядит диалоговое окно с результатами проверки.

Выбор страницы переносит вас на нее, одновременно выделяется фрейм, вызвавший ошибку

5.11. Создание заякоренных фреймов

Заякоренные фреймы отличаются от свободно размещенных тем, что они жестко привязаны к конкретному месту в тексте. Родителем заякоренного фрейма является, таким образом, точка вставки (insertionPoint), а сам он ведет себя как обычный символ. Все в полном логическом соответствии: вспомните, как создаются такие фреймы в публикации. Один из вариантов состоит в копировании текстового фрейма в системный буфер, затем, если поместить курсор в текст и содержимое буфера вставить, в этом месте появится заякоренный фрейм. Передвигается он так же, как любой другой символ: при вставке символов он смещается по строке и, при необходимости, переходит на другую строку.

Таким образом, получить ссылку на родителя заякоренного объекта можно так:

mylnsertionPoint = myAnchoredTextFrame.parent

Чтобы создать какой-либо заякоренный объект, нужно сначала определить место в тексте, куда он должен быть вставлен, а затем использовать традиционный метод для добавления элементов add(), например:

myTextFrame.insertionPoints[0].rectangles.add()

или же

myTextFrame.paragraphs[3].words[2].rectangles.add()

Соответственно для вставки текстового фрейма, заякоренного в месте курсора:

myTextFrame.selection[0].textFrames.add()

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

Листинг 5.22. Создание in-line-фрейма в первом фрейме на первой странице I

var myDocument = арр.documents[0]; var myPage = myDocument.pages[0] ; var myTextFrame = myPage.textFrames[0] ; var mylnlineFrame =


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