«Сегодняшний приглашенный блоггер - Пол Старр, переводчик с японского, который обратился к скриптам InDesign, когда начал редактировать японские комиксы. Это первая из серии статей о людях, которые пишут код в первую очередь для автоматизации Продукты Adobe без степени компьютерных наук ».

- Эрин Финнеган, инженер сообщества, Adobe

Я редактор Коданша США. Работа моей команды - следить за публикацией сотен томов манги - японских комиксов - каждый год для англоязычного рынка. Это включает в себя перевод, надписи и редактирование тысяч страниц комиксов каждый месяц. Сочетание большого объема нашей книги, разнообразия художественных ресурсов, с которыми мы работаем, и специфических особенностей манги сделали ее заманчивой целью для автоматизации.

Была загвоздка

Я ... строго говоря, не умел писать код. Мой опыт программирования в лучшем случае слабый. Я прошел год информатики в старшей школе, где я выучил Паскаль, что может дать вам представление о том, когда я пошел в старшую школу. С тех пор каждые пять лет или около того у меня возникало искушение написать небольшой сценарий или программу, и я отказывался от нескольких часов в работе после того, как становился слишком нетерпеливым из-за моего отсутствия знаний и навыков при попытке выполнить что-то, что казалось похожим на это. должно быть просто.

И все же - сочетание моего постоянного разочарования с очевидным повторением нашего рабочего процесса и огромного количества учебных материалов по JavaScript, доступных в Интернете, помогло мне подняться по крутому склону неспособности достичь одной из нижних ступеней полезности.

Чрезвычайно полезными были сообщения в блоге разработчиков Adobe, посвященные основам CEP: Как создать свою первую панель Adobe Стива Квака, Панели CEP и объекты JSON Давида Барранки и Отладка панели Adobe Эрин Финнеган. Вдобавок энтузиазм Тома Шарстайна по поводу кода внешней панели в целом и Vue.js в частности убедил меня выйти из зоны комфорта, и это было очень полезно.

Я более или менее постоянно использовал преобразование Грегором Фелленцем официальной документации Adobe Indesign ExtendScript API, работая над скриптами InDesign, и архивы официальных форумов по скриптингу InDesign были чрезвычайно полезны, когда я искал практические примеры как использовать API.

Переключение направления привязки

Самая заметная особенность наших книг заключается в том, что почти все они читаются задом наперед, то есть справа налево. (Примечание редактора: До начала 2000-х годов многие японские комиксы не могли читать в американском направлении справа налево, пока некоторые предприимчивые издатели комиксов не обнаружили, что было дешевле позволить фанатам читайте комиксы как есть, слева направо.) Иногда мы получаем файлы с направлением переплета справа налево, но чаще книги просто разбиваются на страницы в обратном порядке, а номера страниц размещаются вручную.

InDesign отлично обрабатывает направление переплета справа налево, но версия для США не предоставляет эту конкретную функцию по умолчанию. Тем не менее, он все еще присутствует в настройках документа. Я написал сценарий для переключения направления привязки текущего документа между направлениями слева направо и справа налево, и это даже однострочное письмо, если вы используете тернарный оператор ? : следующим образом:

Подбор художественных рамок к размеру обрезки

Необработанные художественные ресурсы, с которыми мы работаем, часто не имеют одинаковых размеров в пикселях, поэтому после размещения на страницах их необходимо подтолкнуть в правильное положение. Насколько мне известно, полностью обойтись без этого вручную невозможно, но сценарий для автоматизации перестановки кадра, содержащего искусство, очень полезен.

Такой сценарий в идеале должен работать с книгами с произвольными размерами обрезки и выравнивать рамку по ширине страницы, которая в наших книгах составляет 9 точек (т. Е. ⅛) по каждому внешнему краю. Мне показалось удобным использовать точки в качестве единицы измерения, поэтому сценарий начинается с:

app.scriptPreferences.measurementUnit = MeasurementUnits.POINTS;

Основная логика заключается в настройке размеров графического блока в соответствии с размерами страницы, на которой он находится, плюс 9 точек во всех направлениях, кроме желоба. Вот пример:

Я быстро обнаружил, что мне потребуется дополнительная логика для учета направлений привязки как справа налево, так и слева направо, но поскольку я уже написал сценарий разворота привязки, я знал, как проверить направление привязки:

Произошла сводящая с ума ошибка, которая, казалось бы, произошла случайно. В некоторых документах, только на страницах с правой стороны, команда в данный момент не может разместить фрейм. Потребовалось несколько дней отладки, чтобы обнаружить, что математические расчеты, которые скрипт использует для определения границ окна, зависят от происхождения линейки страницы для каждого разворота, а не для каждой страницы. Если в документе источником линейки была указана страница, сценарий становился ненадежным. Как только я понял это, было просто добавить строку в начале скрипта, чтобы правильно установить линейку:

app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN

Этот скрипт предполагает, что искусство всегда находится на нижнем слое документа, а нижний слой содержит только искусство страницы. Для некоторых книг это может быть опасным предположением, но для наших книг это не оказалось проблемным.

В целом, это оказалось более тонкой проблемой, чем я ожидал, однако в некоторые дни я запускал этот скрипт сотни раз, так что это стоило времени, которое я потратил на то, чтобы разгадывать его.

Быстрый экспорт текущей страницы для исправлений

Наш рабочий процесс включает получение пробного отпечатка с принтера, и, если нам нужно внести дополнительные исправления, исправления необходимо вернуть в виде отдельных одностраничных PDF-файлов. Кроме того, независимо от направления переплета документов InDesign, в которых они были созданы, наши готовые к печати PDF-файлы с чтением справа налево необходимо заказывать с последней страницы. Это делает трудоемким и подверженным ошибкам определение того, какая страница документа InDesign соответствует какой странице последовательности в переплетенной пробе; порядковый номер (опять же) зависит от того, настроен ли документ справа налево или слева направо.

Я хотел иметь возможность быстро экспортировать PDF-файл любой страницы, над которой я сейчас работаю, с правильным порядковым номером принтера в имени файла, независимо от направления привязки. Вот сценарий, который я придумал:

Сопоставление этого сценария с сочетанием клавиш сэкономило мне часы времени и избавило меня от раздражения.

Создание эскизов примечаний к переводу

Мы часто включаем примечания к переводу в конце наших заголовков, чтобы объяснить культурные особенности или лингвистические нюансы, и читатели всегда ценят этот дополнительный материал. Очень удобно иметь возможность ссылаться на миниатюрные детали каждой страницы, обсуждаемой в сносках, но сборка вручную трудоемка.

Чтобы ускорить процесс, я написал сценарий для леттера или редактора, который запускается после выбора всех иллюстраций и текстовых фреймов, которые появятся на миниатюре. Затем сценарий копирует выделение, группирует его и вырезает в буфер обмена. Затем он создает новый фрейм, вставляет сгруппированные объекты в фрейм и вырезает этот фрейм обратно в буфер обмена. После этого его можно будет вставить в примечания к переводу. Для удобства я добавил логику, которая создает или применяет соответствующий стиль объекта к фрейму контейнера.

В заключении

Эти относительно простые сценарии внесли заметный вклад в самые вопиюще повторяющиеся аспекты моего рабочего процесса редактирования манги - я, конечно, сэкономил десятки часов, - но можно сделать гораздо больше. В настоящее время я работаю над панелью CEP, чтобы сделать интерфейс для этих инструментов более удобным, а в более долгосрочной перспективе меня также интересуют изменения в переводческой части рабочего процесса, которые могут еще больше ускорить верстку и написание.

Я все еще работаю над тем, чтобы убедить мировых редакторов комиксов в том, что регулярные выражения действительно заслуживают изучения.

Я очень забочусь об этом и люблю об этом говорить. Моя контактная информация доступна на моем адекватном сайте.

Вы писатель сценария InDesign без формального образования в области компьютерных наук? Дайте нам знать об этом в комментариях.