Сценарии InDesign - Начинающий - PullRequest
1 голос
/ 04 мая 2011

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

По сути, вот что я хочу сделать.У меня есть 5 (иногда, но редко, 4) -значная строка.Затем под текстовым фреймом у меня есть три прямоугольника, к которым я хотел бы применить образец, в зависимости от последних цифр числа.Числам 0-9 назначен определенный цвет (и образец), и в данный момент я вручную прохожу каждый прямоугольник и выбираю его в соответствии с двумя последними цифрами, и применяю образец ко всем выбранным.

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

0 = красный 1 = синий 2 = зеленый ....

Итак, для следующего кода: 12312, я бынапример, столбцы внизу имеют следующие цвета:

синий красный синий

(т. е. верхний и нижний ряд = предпоследняя цифра; средний ряд = последняя цифра).

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

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

Любая помощь или указатели будут с благодарностью получены!

1 Ответ

3 голосов
/ 04 мая 2011

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

test();
function test(){

    //Open your document:
    var myDoc = app.open('c:/users/user/desktop/test.indd');

    //Get all groups for this document:
    var myGroups = myDoc.groups;

    //Get all swatches for this document:
    var mySwatches = myDoc.swatches;

    //Loop through all of your groups:
    for (var i = 0; i < myGroups.length; i++){

        //for each group we need to get the code from the text frame,
        //so get the text frame first:
        var myTextFrame = myGroups[i].textFrames[0];

        //Now get the color code from the text frame:
        var myColorCode = myTextFrame.contents;

        //get the rectangle from this group:
        var myRect = myGroups[i].rectangles[0];

        //here you would want to parse out whichever digits you need from myColorCode

        //use the code to determine which swatch to use, loop through the swatches:
        for(var s = 0; s < mySwatches.length; s++){

                //find it:
                var mySwatch = mySwatches[s];

                //apply this swatch to your rectangle, and leave the loop:
                myRect.fillColor = mySwatch;
                break;
        }

    }


}

Надеюсь, это поможет! Вот некоторые ссылки на скрипты прямо из Adobe , которые должны помочь. Дайте мне знать, если у вас есть какие-либо вопросы по поводу примера выше.

...