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 потому сразу же исключаем их из проверки: