Нумератор для разворотов (обновление)
Этот скрипт — альтернатива стандартным Data Merge или созданию абзацного стиля с опцией Bullets and Numbering для последовательной нумерации.
Первоначально скрипт делался как инструмент нумерации разворотов, но если в работе опция Facing Pages неактивна, то нумероваться будут поочередно все страницы — в фреймах будут последовательные номера в соответствии с установками, заданными при запуске скрипта.
Предыдущий вариант скрипта был функционально избыточным — в данном случае нет нужды связывать фреймы в одну цепочку. Лишние действия были причиной его медленной работы.
В этой версии скрипта связывание фреймов исключено, и при том же пользовательском интерфейсе программа стала работать на порядок быстрее.
Это ускорение получено и за счет того, что теперь фрейм для номера отвязан от мастер-страницы.
И вот тут есть над чем поговорить. Можно, добавив нужное число страниц, отсоединить их все от мастер-страницы. В этом случае и фрейм номера, и все элементы страницы потеряют связь с мастер-страницей. На мой взгляд, это не лучшее решение. Я предпочел бы, чтобы номера размещались в отсоединенных от мастера фреймах, но все остальные элементы были привязаны к мастер-странице. Поэтому возник вопрос «Можно ли на всех страницах документа отвязать только некоторые объекты с мастер-страницы?»
Ответ на него такой «Да, можно, если предварительно разместить их на отдельном слое и на время действия команды меню Override All Master Page Items оставить активным только этот слой».
Вот шаги подготовки к запуску скрипта.
1) нарисуйте на мастер-странице текстовый фрейм и присвойте ему метку.
2) если на мастер-странице создано несколько фреймов с такой меткой, в них будут помещены последовательные номера.
3) этот фрейм (или фреймы, если их несколько с одинаковой меткой) перемещается на отдельный слой.
4) добавьте в верстке нужное число страниц.
5) в палитре слоев отключите все слои, кроме того, на котором этот фрейм для нумерации. В верстке выбирите все страницы и разорвите их связь с мастер-страницей (команда из контекстного меню (правая кнопка мыши) Override All Master Page Items, или эта же команда из меню палитры Pages ).
Тот факт, что сейчас в палитре слоев активен только слой с номером, гарантирует, что в результате в верстке от мастера-страниц будут отсоединены только фреймы для номеров.
Всё другое оформление документа останется привязанным к мастерам, .т.к. в момент разрыва страниц верстки с мастер-страницами слои с оформлением издания были отключены.
Оформление текста записи с номером определяется установками, сделанными при создании этого фрейма. Хорошая практика — сразу после создания на мастер-странице фрейма номера присвоить фрейму стиль объекта.
Перед запуском скрипта на любой странице верстки должен быть выбран фрейм, в котором будет один из номеров.
После запуска скрипта:
1) определяется текст до и после номера, если это нужно;
2) задается начальный номер и число разрядов числа — т.е. если ввести 1, то номера будут 1,2,…,9, 10, 11… , а если ввести 000001, то номера будут 000001, 000002, 000003…
В процессе нумерации скрипт ищет на полосах фреймы с нужной меткой и в каждом таком фрейме помещает очередной номер.
По завершении работы скрипта выводится информация о параметрах нумерации, время работы скрипта и значение темпа нумерации — сколько миллисекунд требовалось на один номер.
Параметры нумерации сохраняются, и при повторном запуске помещаются в окно диалога скрипта.
P.S.
Так сложилось, что на нашем сайте появилось два скрипта, решающих задачу нумерации, есть еще скрипт «Нумерация с произвольным приращением» http://adobeindesign.ru/2010/07/28/numeraciya-biletov-s-proizvolnym-prirashheniem/
Они практически одинаковы по интерфейсу и быстродействию.
Я добавил в этот скрипт код, выводящий информацию о времени нумерации в миллисекундах
var myDateStart = new Date; var myTimeStart = myDateStart.getTime(); autoNumber1( myObjStyle, myPrefix, myStartNumberStr, mySuffix, myDelta); var myDateFinis= new Date; var myTimeFinis = myDateFinis.getTime(); var myProcTime = myTimeFinis - myTimeStart; alert ("Время обработки [мс] " + myProcTime); |
что в процессе работы с новой версией позволило сравнить оба скрипта.
И не всё тут ясно и понятно. Во-первых, каждый скрипт показывает разное время при выполнении несколько раз подряд одной и той же задачи. Расхождение в десятки-сотни миллисекунд. Во-вторых, время выполнения имеет тенденцию к росту — одна и та же задача с каждым новым запуском выполняется чуть-чуть дольше. В-третьих, прогресс-бар показывал, что иногда процесс нумерации на время приостанавливается, и после некоторой паузы идет дальше. И длительность этих пауз, и место на прогресс-баре, где они появляются, всегда разная. И это не зависит от того, включен или нет режим управления движком (#targetengine «session»).
После всех этих экспериментов сложилась такая практическая рекомендация — не увлекайтесь расстановкой большого числа номеров за один раз, 500-600 не больше. Работа в десять привёрток по 600 номеров будет сделана быстрее, чем за один раз 6000 номеров.
Кто знает, может кому-то из посетителей этого сайта придется нумеровать билеты для зимней олимпиады или чемпионата мира по футболу. Пожалуйста, инструмент уже есть!
Такие дела.
Скачать скрипт (*.zip)
Последние комментарии