}
myObj.move(mySpread);
myObj.move([myBounds[1], myBounds[0]]);
}
Принцип работы скрипта прост: просматриваем все объекты в документе и у каждого определяем родителя- ближайший объект, в состав которого он входит. Родителями могут быть как страницы, так и монтажные столы. Поэтому развороты, являющиеся родителями для страниц, нас не интересуют. Если родитель- страница, пропускаем объект, иначе записываем его уникальный идентификатор (id) во временное хранилище:
moveablesArray.push(myPageltems[i].id); Можно было бы использовать и другой метод для пометки - каждый объект в InDesign имеет свойство Label - это что-то вроде ярлыка, куда можно записывать любые пользовательские данные, вплоть до скриптов. В таком случае достаточно было бы объектам, удовлетворяющим нашим требованиям, присваивать, например, Label = "PasteBoard" - результат был бы идентичен.
По окончании данного шага в массиве moveablesArray находятся идентификаторы объектов, расположенных на монтажных столах, которые потом будем перемещать. Но прежде из них нужно отфильтровать те, которые расположе ны на текущем монтажном столе - поскольку они уже находятся в нужном месте.
if (myObj.parent == mySpread) continue; В случае, если в публикации используется обычный способ создания разворотов (Facing pages), нужно предусмотреть один момент. Дело в том, что перенос объектов с монтажных столов тех разворотов, на которых имеется только одна страница (для Facing pages - первая) чреват некорректным расположением объектов: вместо размещения на новом монтажном столе они попадают на саму страницу. Чтобы избежать этого, будем перед началом перемещения координаты перемещаемого объекта запоминать, а после сдвига- устанавливать в корректную позицию.
Естественно, нужно предусмотреть и случай, если по каким-либо причинам кандидат на перемещение был заблокирован (locked). Варианта всего два - либо его пропускать, либо снимать блокировку, и, как остальные, перемещать. Скрипт заблокированные объекты не трогает- это логично, ведь для блокировки объектов наверняка имелись веские причины. С методом move о мы уже знакомы.
4.14. Спуск полос
После того как мы научились работать с монтажными столами и страницами, попробуем свои силы в более серьезном - спуске полос. Скрипт позволяет автоматизировать достаточно рутинную и в то же время очень ответственную работу по перетасовке страниц таким образом, чтобы при сложении книжкой они создавали правильные развороты. Работа хоть и простая, но требует большой внимательности, поскольку при ее выполнении, как редко где еще, проявляется пресловутый человеческий фактор, который потенциально способен привести к различным, в том числе финансовым, потерям. Собственно, именно на таких задачах, полностью механических, не требующих никакого вмешательства человека, польза от скриптов проявляется в максимальной степени.
Скрипт выполняет простейший листоподбор (рис. 4.4), размещая попарно "последнюю- первую", "вторую- предпоследнюю" страницы и т.д. В принципе, никаких трудностей с созданием более сложных раскладок быть не должно. Разумеется, перед запуском нужно проверить распашные блоки- желательно, чтобы их не было. Если они все же присутствуют, можно воспользоваться универсальным вариантом - сохранением публикации в формате PDF (см. разд. 4.8.1) с последующим постраничным импортом в публикацию (см. разд. 9.3), после чего можно совершенно безопасно запускать скрипт: в таком случае сохранение в PDF обезопасит вас от сюрпризов элементов, выходящих на соседнюю страницу.