Автоматизируем фотошоп: скрипты

Задача: требуется распечатать лотерейные билетики. На A4 билетиков умещается 8 штук, у каждого — свой номер. Номер имеет формат «001, 002...050, 051...112, 113...».
Как бы это дело автоматизировать?

В фотошопе есть встроенный исполнитель Java-скриптов, чем мы и воспользуемся.
(Можно для начала почитать вводный урок).

1. Итак, создаем файл myscript.jsx и пишем в него следущее:
    //комментарии оформляются двумя слэшами
    var docRef = app.activeDocument; //получаем указатель на активный документ
    var startDisplayDialogs = app.displayDialogs; //сохраняем настройку отображения диалогов

    app.displayDialogs = DialogModes.NO; //отключаем отображение диалогов


    for ( i = 0; i < 10; i++ ) //сколько ЛИСТОВ нам надо отпечатать (в данном случае — 10)
    {
    for ( j = 0; j < 8; j++ ) //сколько номеров на одном листе (в данном случае — 8)
    {
    docRef.layers[j].textItem.contents = docRef.layers[j].textItem.contents — 0 + 8;

    if ( (docRef.layers[j].textItem.contents — 0) < 10 )
    docRef.layers[j].textItem.contents = "00" + docRef.layers[j].textItem.contents;
    if ( (docRef.layers[j].textItem.contents — 0) < 100 )
    docRef.layers[j].textItem.contents = "0" + docRef.layers[j].textItem.contents;
    }
    docRef.print(); //отправляем на печать
    }

    app.displayDialogs = startDisplayDialogs; //восстанавливаем настройку отображения диалогов
Комментарии к скрипту:
docRef — это активный документ
docRef.layers[j] — слой с номером j. Слои считаются с нуля (верхний) и дальше (вниз)
docRef.layers[j].textItem.contents — текстовое содержание слоя (если слой — текстовый)

В строке docRef.layers[j].textItem.contents = docRef.layers[j].textItem.contents — 0 + 8;
мы вычитаем ноль, чтобы преобразовать текстовое представление номера в числовое, и прибавляем 8 (т.к. у нас всего 8 номеров на листе).

Строки if ( (docRef.layers[j].textItem.contents — 0) < 10 )
docRef.layers[j].textItem.contents = "00" + docRef.layers[j].textItem.contents;

Если номер меньше 10, то прибавляем к нему вначале «00». Если меньше сотни — то «0».


2. В psd-документе поднимаем 8 слоев с номерами поверх всех остальных.
Изначально номера должны быть уже проставлены: 001, 002, ... 008.

Автоматизируем фотошоп: скрипты *


Затем отправляем первый лист на печать, указывая все настройки.

А дальше выбираем: File -> Scripts -> Browse, находим наш файл myscript.jsx и открываем его.
И смотрим, как автоматически перенабираются цифры. Вот только приходится нажимать Enter при открытии диалога печати (как это обойти, не нашел). Но это ведь небольшая проблема по сравнению с перенабором 1000 номеров : )


Автор: rdi

Это сообщение отредактировал ash — 7 Августа 2008, 07:23


Создаем спецэффекты

Вас может также заинтересовать:

19 сентября 2018

Всегда носите чрезвычайно стильную 14-мегапиксельную фотокамеру COOLPIX S2600 с собой, чтобы никогда не пропустить возможность запечатлеть незабываемые мгновения. Эта фотокамера, оснащенная 5-кратным зум-объективом NIKKOR, режимом записи четких видеороликов и рядом...

19 сентября 2018

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

19 сентября 2018

Мощная и одновременно чрезвычайно удобная зеркальная фотокамера формата DX. КМОП-матрица с разрешением 24,2 мегапикселя, режим справки, система EXPEED 3, запись D-видео в формате Full HD, чувствительность ISO 100–6400, 11-точечная система автофокусировки и легкий корпус. Фантастический способ запечатлеть мгновения жизни с богатейшей детализацией.