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

Задача: требуется распечатать лотерейные билетики. На 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


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

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

20 июля 2018

Дата анонса: 2010/02/02 Эффективное разрешение, МП: 10 Диагональ ЖК-дисплея, дюймы: 3

20 июля 2018

Байонет: Minolta A Тип объектива: макрообъектив Фокусное расстояние: постоянное

20 июля 2018

Дата анонса: 2009/02/18 Эффективное разрешение, МП: 10 Диагональ ЖК-дисплея, дюймы: 2.5 Вес с батареей и картой памяти, г: 120