if (flagStorage.length != requiredLength)

alert("He все необходимые’стили присутствуют в документе")

Новое в InDesign Creative Suite 3_

В InDesign Creative Suite 3 свойство applyStyle (задание абзацу стиля) заменено свойством applyParagraphStyle, что, по логике вещей, более корректно.

6.4.4. Удаление неиспользуемых стилей

Кроме создания стилей, может возникнуть потребность их удаления - например, неиспользуемых в публикации: вообще же считается дурным тоном отдавать публикацию на фотовывод с лишней информацией, в том числе с неиспользуемыми стилями. В таком случае проще всего применить регуляр ные выражения. Из множества возможных вариантов выполнения данной задачи выберем наиболее простой, а потому самый скоростной (листинг 6.8).

Подход следующий: сначала просматриваются по очереди все абзацы и определяются задействованные стили (через свойство абзаца appiiedParagraphstyle). Названия стилей записываются в строку. Затем также по очереди выбираются стили из списка всех существующих в публикации (через свойство документа paragraphStyles). после чего обе строки сравниваются: в случае совпадения названий переходим к следующему стилю из списка, если совпадение не найдено - значит, в публикации стиль не используется и потому удаляется.

Осталось решить вопрос с диапазоном поиска. В самом деле, если использовать стандартный подход- стиль искать среди объектов коллекции textFrames, можно "наломать дров". Согласно объектной модели, у заякоренных текстовых блоков (Anchor) родитель не текстовый фрейм, а символ, поэтому использование textFrames будет ошибочным (или потом придется опускаться на уровень characters). Поэтому, чтобы не пропустить ни одного абзаца, обратимся к свойству aiiPageitems, которое дает доступ полностью ко всему содержимому страницы.

Листинг 6,8. Удаление неиспользуемых стилей

var styleApplied =

var pgl = document.allPageIterns;

var allStyles = document.paragraphStyles;

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

if (pgl[i] == "[object TextFrame]")

{

pars = pgl[i].paragraphs; for (j=0; j<pars.length; j++){

styleApplied += pars[j].appiiedParagraphstyle.name;

i

J

}

}

for (i=2; i<allStyles.length; i++){

ix = styleApplied.search(allStyles[i].name); if (ix == -1) {

allStyles[i].remove(); Создаем ссылки на объекты:

myAHItems = арр. activeDocument. allPageltems; myParagraphStyles = арр.activeDocument.paragraphStyles; Создаем строку для накопления в ней всех использованных в документе стилей:

styleApplied =

В цикле просматриваем абсолютно все содержимое публикации, отфильтровываем только текстовые фреймы

for (i=0; i< myAHItems. length; i++) (

if (myAHItems [i] . constructor.name == "TextFrame") {

и сохраняем все использованные стили:

myParagraphs = myAUItems [i] .paragraphs; for (j=0; jcmyParagraphs.length; j++){

styleApplied += myParagraphs[j].appliedParagraphStyle.name;

}

}

Сравниваем хранимые в публикации стили с реально используемыми. При этом учитываем, что в InDesign существует 2 предопределенных стиля, которые не МОГут быть удалены ([No Paragraph Style] И [Basic Paragraph]), a потому сразу же исключаем их из проверки:


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