Acrobat и JavaScript
Довольно давно мне хотелось попробовать написать что-нибудь простенькое под Акробат, раз уж там есть поддержка JS. И вот наконец такой случай представился. В почту постучался старый посетитель сайта с нестандартной просьбой: нужен инструмент, быстро показывающий размеры всех полос в PDF в удобном для восприятия формате. Не помню уже, зачем конкретно это было нужно; главное, что в работу поступали дикие необъезженные PDF с очень разными размерами полос и с этим надо было эффективно бороться. Да, можно создать в PitStop такой action (или префлайт-профиль), который сравнивает размеры полос с заведомо недопустимым 0x0mm, но результат его работы выглядит совершенно нечитабельно: Легко ли увидеть здесь, что 1, 4 и 5 полосы имеют размер 216x280mm, а 2 и 3 — размер 100х280mm? А если полос 80? Неудобно. Так родился этот скрипт: function getAllIndexes(arr, val) { var indexes = [], i = -1; while ((i = arr.indexOf(val, i+1)) != -1){ indexes.push(i+1); } return indexes; } function onlyUnique(value, index, self) { return self.indexOf(value) === index; } var msg = "" var arr = []; for (var p = 0; p < this.numPages; p++) { var box = this.getPageBox("Trim", p); var width = Math.round((box[2] - box[0]) / 2.83); var height = Math.round((box[1] - box[3]) / 2.83); size = width + "x" + height arr.push(size); } var uniq = arr.filter( onlyUnique ); uniq.forEach(function(value) { indexes = getAllIndexes(arr, value); c = indexes.length; msg = msg+"Размер "+value+"mm имеют "+c+" страниц: "+indexes+"\r\n"; }); app.alert(msg, 3); Его удобно повесить на панель Акробата и запускать оттуда буквально одним нажатием кнопки. Отработав, скрипт покажет размеры страниц, их количество и номера: Сам скрипт доступен по этой ссылке. Видеоинструкция по установке (я пользуюсь ретроградским Acrobat XI, в более современных версиях вынос скрипта на панель будет выглядеть иначе): Напоследок не могу упомянуть ужасно неудобный акробачий интерфейс работы со скриптами. Это просто издевательство какое-то! Чтобы добраться до редактирования скрипта, нужно прокликать чёртову уйму кнопок. Дебаггера практически нет (тот, что есть — недоразумение!). Если вы знаете какой-то более удобный способ — молю, напишите в почту. Буду благодарен. 🙂 И на всякий случай: архив с Acrobat SDK. Мало ли кому-нибудь захочется написать что-то своё под Акробат, а Adobe его решит удалить как “никому не нужный”. Плавали, знаем, уже было похожее. |