Question

Je suis un programmeur JavaScript chevronné et je travaille actuellement sur un projet qui nécessite beaucoup de travail, et j'espère que le processus pourra être automatisé à l'aide de scripts pour InDesign.

Voici essentiellement ce que je veux faire. J'ai une chaîne de 5 (parfois, mais rarement, 4) chiffres. J'ai ensuite trois rectangles sous le cadre de texte auquel je voudrais appliquer un échantillon, en fonction des chiffres finaux du nombre. Les nombres 0-9 se voient attribuer une couleur spécifique (et un échantillon), et pour le moment je passe manuellement par chaque rectangle, et le sélectionne en fonction des deux derniers chiffres, et applique l'échantillon à tous ceux sélectionnés.

Je suis convaincu qu'il doit être possible d'automatiser le processus à l'aide des scripts utilisateur InDesign, mais je ne comprends pas bien cela. Voici un exemple de la manière dont les couleurs sont attribuées aux codes-barres spéciaux:

0= rouge 1= bleu 2= vert ....

Donc pour le code suivant: 12312, je voudrais que les barres en dessous aient les couleurs suivantes:

bleu rouge bleu

(c.-à-d. rangée du haut et du bas= avant-dernier chiffre; rangée du milieu= dernier chiffre).

Quelqu'un pourrait-il m'indiquer comment je pourrais écrire un script qui parcourt les pages de mon document, trouve les codes, extrait les deux derniers chiffres puis applique un échantillon à l'objet rectangle, en fonction du nombre ...

Je suis convaincu que je pourrais écrire quelque chose comme ça en utilisant du JavaScript et du HTML classiques, mais cela étant dit, je suis familier avec le DOM en HTML ...

Toute aide ou pointeur sera chaleureusement reçu!

Était-ce utile?

La solution

Voici un exemple de script que je viens de saisir rapidement et qui devrait vous aider à démarrer.Vous devrez peut-être l'ajuster, mais je pense que cela couvre ce que vous demandez.

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;
        }

    }


}

J'espère que cela vous aidera!Voici quelques références de script directement à partir d'Adobe qui devraient vous aider.Faites-moi savoir si vous avez des questions sur l'exemple ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top