if (myDocument.length < 1)
alert("Ни одного открытого документа нет!"); Следующая проверка - на наличие текста:
if (myDocument. textFrames . length. < 1)
В цикле пробегаем по всем страницам:
for(var i = 0; i < myDocument.pages.length; i++j { и заглядываем в каждый текстовый фрейм на них:
for(var j= 0; j<myDocument.pages[i].textFrames.length; j++)
В случае переполнения запоминаем номер страницы
if(myDocument.pages[i].textFrames[jl.overflows) overflowArray.push(i); Для удобства отображения номеров страниц с переполнением сводим их в строку:
if(overflowArray.length > 0) (
pages = overflowArray.j oin()
Что можно сделать и по-другому:
pages = overflowArray.toString()
И выводим отчет о результатах:
alert(Количество переполнений: " +overflowArray.length +
"\n" + "На страницах: " + pages) ; В противном случае - выводим соответствующее предупреждение:
alert("Переполнений нет! ")
А вот как можно решить эту же задачу проще и быстрее (листинг 5.19). Как известно, переполнение может возникнуть только в последнем фрейме цепочки, а каждая цепочка на языке InDesign - это отдельный объект story, у которого также есть свойство overflows. Таким образом, достаточно пробежаться по всем story (а их, как правило, меньше, чем всех фреймов, значит, скорость выполнения скрипта будет выше) и определить признак переполне ния. Если вдруг таковой имеется, найти у каждого материала последний текстовый фрейм и через свойство parent выйти на номер содержащей его страницы.
Листинг 5.19. Поиск переполнения текстовых фреймов (вариант 2)
var myStories = myDocument.stories lastFrames = []
for(var i = 0; i < myStories.length; i++) {
if(myStories[i].overflows){
-lastFrame = myStories[i].textFrames.lastltem() lastFrames.push(lastFrame) overflowPageNumber = lastFrame.parent.nane
В случае переполнения запоминаем номер страницы, а дальше- все,как в предыдущем варианте:
overflowArray.push(overflowPageNumber);
}
alert(overflowArray)
Для удобства номера страниц, на которых произошло переполнение, лучше вывести в виде раскрывающегося списка (использовать объект dialog.dropdown), выбор любого элемента из которого приводит к переходу на текстовый фрейм, вызвавший переполнение. Преимущества такого метода ярко проявляются при плотной верстке, когда материалов на одной странице множество. В таком случае вместо alert о добавим несколько срок (листинг 5.20).
Листинг 5.20. Вывод номеров страниц с переполнением в раскрывающийся список
dig = app.dialogs.add({name:" Поиск фреймов с переполнением", ^ canCancel:true}); column = dig.dialogColumns.add(); row = column.dialogRows.add();
row.staticTexts.add({staticLabel:"Выберите страницу, в которой переполнение, и нажмите кнопку ОК для перехода на нее"});
row = column.dialogRows.add();
dropdown = row.dropdowns.add({minWidth:400, stringList: overflowArray, 'З?
selectedlndex:0}); if (dig.show() == true)
{
// Переход на выбранную страницу document.layoutWindows[0].activePage = overflowArray[dropdown.selectedlndex];