Photoshop Automation

Генератор карточек чехлов по макету PSD: пакетная обработка и экспорт в PDF через Photoshop JSX

✍️ Aleksey Belyaev 📅 15.10.2026
#Photoshop JSX #Smart Objects #Пакетный рендеринг #PDF экспорт #Автоматизация
📋 Indice dei Contenuti:

Введение и постановка инженерной задачи


При производстве аксессуаров и полиграфической продукции ключевым узком является подготовка предпечатных макетов и карточек товаров. Когда линейка принтов насчитывает сотни артикулов, а моделей устройств — десятки (от базовых до флагманских линеек, включая новые макеты уровня iPhone 17 Air), ручная подстановка принтов в Photoshop превращается в рутину с высоким риском человеческой ошибки.

Цель проекта: создать автономный конвейер на базе ExtendScript (Photoshop JSX), способный в пакетном режиме брать каталог входящих принтов (.jpg, .png), подставлять их в смарт-объекты эталонного PSD-шаблона, центрировать, производить автоподгонку размеров и сохранять результат как в послойные JPEG-превью, так и в стандартизированные печатные PDF-файлы.

ExtendScript (JSX) предоставляет прямой низкоуровневый доступ к Action Manager API через ActionDescriptor и ActionReference, что позволяет управлять смарт-объектами без отображения диалоговых окон и с максимальной скоростью.

Архитектура скриптового конвейера


Конвейер состоит из нескольких изолированных фаз обработки:
  • Инициализация окружения: отключение модальных окон Photoshop (DialogModes.NO) и сохранение системных линеек.

  • Итерация по директории входящих принтов: сортировка и валидация входящих изображений.

  • Открытие и модификация смарт-объекта: выполнение placedLayerEditContents через ActionDescriptor.

  • Геометрическое позиционирование: авто-выравнивание слоя по центру документа с пересчетом UnitValue.

  • Обновление и сохранение смарт-объекта: применение updatePlacedLayer и закрытие дочернего документа.

  • Пакетный экспорт: сохранение готового документа в печатный PDF и экранный JPG.

  • Ключевые фрагменты реализации на JSX

    1. Безопасное открытие и редактирование Smart Object


    Для открытия вложенного смарт-объекта без вызова блокирующих модальных окон используется вызов placedLayerEditContents:
    • source.javascript
    function OpenSmartObject(show) {
        try {
            var desc = new ActionDescriptor();
            executeAction(
                stringIDToTypeID("placedLayerEditContents"), 
                desc, 
                (show === true) ? DialogModes.ALL : DialogModes.NO
            );
        } catch(e) {
            // Логирование ошибки смарт-объекта
        }
    }
    

    2. Центрирование слоя по холсту документа


    После вставки нового принта требуется идеальное позиционирование по центру базового шаблона:
    • source.javascript
    function CenterLayerByDoc(layer) {
        try {
            var doc = app.activeDocument;
            var w = doc.width.as('px');
            var h = doc.height.as('px');
            var pos = layer.bounds;
            var layw = pos[2].as('px') - pos[0].as('px');
            var layh = pos[3].as('px') - pos[1].as('px');
            var trX = new UnitValue(w/2 - layw/2 - pos[0].as('px'), 'px');
            var trY = new UnitValue(h/2 - layh/2 - pos[1].as('px'), 'px');
            doc.activeLayer.translate(trX, trY);
        } catch(e) {}
    }
    

    3. Авто-сохранение и обновление родительского документа


    После замены графики смарт-объект синхронизируется через команду updatePlacedLayer и закрывается без подтверждения:
    • source.javascript
    function SaveAndCloseSmartObject() {
        var oldDialogs = app.displayDialogs;
        app.displayDialogs = DialogModes.NO;
        try { 
            executeAction(stringIDToTypeID("updatePlacedLayer"), undefined, DialogModes.NO); 
        } catch(_) {}
        try { app.activeDocument.save(); } catch(_) {}
        app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
        app.displayDialogs = oldDialogs;
    }
    

    Результаты и метрики производительности


  • Скорость конвейера: обработка одного товарного артикула занимает ~1.2–1.8 секунды (включая замену смарт-объекта, рендер 4 ракурсов и экспорт PDF).

  • Партия из 500 артикулов: генерируется за 12–15 минут без участия человека.

  • Нулевой процент брака: полностью исключены смещения принтов, битые пропорции или пропущенные файлы.


  • Разработанный конвейер доказал абсолютную надежность при непрерывной обработке каталогов объемом более 10 000 SKU.

    Заказ автоматизации для вашего бизнеса


    Если вашему производству, типографии или интернет-магазину требуется внедрение автоматизированного конвейера обработки графики на базе Photoshop JSX, After Effects или Python:

  • Telegram разработчика: @AlekseyBelyaev

  • Специализация: потоковая обработка графики, генерация карточек, автоматизация Action/JSX, создание отказоустойчивых рендер-серверов.
  • 👨‍💻
    Interessato a realizzare un progetto simile?
    Automazione completa di foto e video: script per Photoshop, After Effects, Premiere Pro, FFmpeg, Python e JS, server di rendering e fabbriche di contenuti.
    💬 Contatta su Telegram
    ← Torna a tutti gli articoli del blog