Во избежание возможных накладок (о них нужно помнить всегда- они бывают более или менее проблемными, но предупредить их по максимуму - в ваших же интересах), сохраним документ под именем, отображающим то, что в публикации выполнен спуск полос - добавим к названию " booklet" и изменим расширение на indt. Сохранение ее в виде шаблона (второй параметр метода save о - true) предохраняет файл от случайной перезаписи, поскольку InDesign всегда открывает только копии шаблона, что гарантирует сохранность исходного макета.
Для получения названия файла используем знакомый метод- split о, указывая в качестве разделителя расширение публикации InDesign (indd). После предварительных действий приступаем к работе. Создаем новый документ на базе только что созданного шаблона, включаем возможность отображать диалоговые окна.
userlnteractionLevel = UserlnteractionLevels.interactWithAll; Перекладываем на язык JavaScript все те действия, которые нужно проделать вручную для спуска полос - в нашем случае потребуется каждую страницу начинать с новой секции. При стандартных настройках программы в процессе добавления секций страницы будут сдвигаться на чужие развороты, что сделает невозможным правильное определение их номера. Во избежание такого развития событий, зафиксируем положение страниц, исключив тем са мым возможность ухода страницы со своего разворота и гарантируя сохранение прежней нумерации. Данная операция в InDesign имеет название shuffle (палитра Pages).
allowPageShuffle = false; Затем в цикле пробегаем по очереди все страницы, определяя параметры каждой с учетом ее положения во вновь созданной секции origSection (формат номера и др.).
Свойство name (не путайте с offset!) страницы или секции - не что иное, как ее название, а не просто порядковый номер.
Итак, представим ситуацию, что какой-то странице мы новую секцию уже добавили. В таком случае все последующие страницы изменят свои названия - первым станет название секции, потом разделитель и, наконец, собственно номер страницы в данной секции. Таким образом, для получения номера секции из названия нужно вычленить номер страницы. Выполним это уже хорошо известным способом - через метод split о. В качестве разделителя используем название секции, в таком случае номер страницы будет иметь индекс 1 (индекс 0 - у самого названия секции): pageName = pageName.split(sectName)[1]; Результатом разделения строки будет массив из строк. Поскольку номера страниц обязаны быть числами, принудительно изменяем тип переменной, в результате чего строка станет трактоваться как число:
pageName.split(sectName)[1].tolnteger (); Необходимая информация для создания секций собрана, настало время их расставлять. Выполняется это традиционным способом - через метод add(), передавая новосозданному объекту необходимые параметры. При этом никакого сдвига страниц со своих разворотов не происходит, поскольку мы предварительно об этом позаботились. В принципе, после расстановки секций нужно восстановить нормальный режим страниц (allowPageShuffle = true), но с учетом того, что в макет больше никаких изменений, затрагивающих изменение порядка и количества страниц, вноситься не будет (во всяком случае, это будет очень нелогично, т. к. листоподбор, как правило, - финальная операция), мы ее выполнять не будем.