2016-08-01 1 views
0

dans les premières fois j'ai pris le texte et le texte de couleur et l'arrière-plan. mais je n'ai besoin de la couleur que pour les premiers mots, et dans la seconde fois je ne peux pas colorier seulement le mot sélectionné. Aidez-moi, s'il vous plaît! Merci.dans indesign javascript. comment sélectionner du texte dans le texte et colorier ce

var textHeaderTf; 
       try{ 
       textHeaderTf = headerTf.paragraphs.item(0); 
       if(textHeaderTf!=undefined && textHeaderTf!=null) 
       { 
        headerTf.parentStory.insertionPoints.item(-1).contents = 'myNewText'; 
        // textHeaderTf.fillColor = myColorA; 
        textHeaderTf.strokeColor = myColorB; 

       } 
       }catch(e){log.write('setHeader font-color error7'+e);} 

       try{ 
       textHeaderTfWord = textHeaderTf.words[0];//headerTf.paragraphs.item(1); 
       if(textHeaderTfWord!=undefined && textHeaderTfWord!=null) 
       { 
        textHeaderTfWord.fillColor = myColorA; 
        textHeaderTfWord.strokeColor = myColorA; 

       } 
       }catch(e){log.write('setHeader font-color error8'+e);} 

Répondre

0

Cela dépend de l'ordre dans lequel vous voulez travailler.

Lors de votre première tentative, vous insérez du texte au début, puis vous définissez la couleur pour un paragraphe entier (votre textHeaderTf).
Dans votre deuxième tentative, vous ne définissez que la couleur du premier mot.

Si vous voulez ajouter du texte à avoir ce couleur le début et tout de suite, utilisez ceci:

textHeaderTf.insertionPoints.item(0).fillColor = myColorA; 
textHeaderTf.insertionPoints.item(0).contents = "Colored text!"; 

C'est parce qu'un InsertionPoint se comporte comme un curseur texte : tout comme dans l'interface lui-même, vous pouvez 'définir' un attribut tel que la couleur, la police ou la taille du texte, puis immédiatement 'taper' du texte dans la même position.

Vous pouvez le faire sur n'importe quel InsertionPoint, pas seulement au début d'un paragraphe. Il fonctionne de la même manière pour ajouter du texte avant le 3ème mot, par exemple.

textHeaderTf.words.item(2).insertionPoints.item(0).fillColor = myColorA; 
textHeaderTf.words.item(2).insertionPoints.item(0).contents = "more colored text here "; 

Si vous voulez colorer un certain nombre de mots existants, vous pouvez les compter avec une boucle:

for (i=0; i<5; i++) 
    textHeaderTf.words.item(i).fillColor = myColorA; 

Gardez à l'esprit que vous abordez encore individuels mots, cependant. Si vous répétez cela avec

for (i=0; i<5; i++) 
    textHeaderTf.words.item(i).underline = true; 

vous verrez que, oui, les mots sont soulignés - mais vous vouliez peut-être souligner les espaces entre eux.

Pour ce faire, vous pouvez cibler un morceau entier de texte en une seule fois en adressant la gamme de caractères entre le premier et les derniers mots:

textHeaderTf.characters.itemByRange(textHeaderTf.words.item(1), 
    textHeaderTf.words.item(4)).underline = true; 

InDesign est assez intelligent pour traduire entre l'indexation words et characters; vous verrez les espaces entre les deux être soulignés, car ils font partie de la plage de caractères que vous référez.