Forums Développement Multimédia

Aller au contenu

[CS3] Script/GREP recherche couleur

PAO InDesign Acrobat PDF

17 réponses à ce sujet

#1 Darkstar

  • Guests

Posté 14 June 2010 - 08:37 AM

Bonjour tout le monde!
Voila, je suis à la recherche d'un script/GREP me permettant de trouver une couleur dans un document Indesign CS3.
Merci de votre aide!!!

#2 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 14 June 2010 - 09:02 AM

Bonjour,

Un script/GREP pour rechercher une couleur ? Je ne crois pas que ce soit très utile. Une couleur de quoi ? de texte, d'objet, de contour, etc. Les options de recherche selon les modes devraient suffire, non ? Sinon, il faudrait préciser vos critères de recherche.
Bonne journée

#3 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 09:03 AM

Voir le messageDarkstar, le 14 June 2010 - 08:37 AM, dit :

Bonjour tout le monde!
Voila, je suis à la recherche d'un script/GREP me permettant de trouver une couleur dans un document Indesign CS3.
Merci de votre aide!!!
Si tu veux parler d'un caractère de telle ou telle couleur, il te suffit de le spécifier dans les options de recherche.
Image IPB
Image IPB

#4 Darkstar

  • Guests

Posté 14 June 2010 - 09:29 AM

Oui c'est une couleur de caractère.
En faite je souhaite créer un script me permettant de rechercher et compter l'ensemble des mots de couleur rouge dans mes documents Indesign.
Ce script est très utile pour savoir le nombre exact de mots modifiés de cette couleur.

J'ai ce script malheureusement j'ai une erreur sur la ligne 2 :)

app.findTextPreferences = null;
app.findTextPreferences.fillColor = "red";

//set some options here
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.wholeWord = true;
app.findChangeTextOptions.includeFootnotes = true;

alert (app.activeDocument.findText().length);

#5 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 10:49 AM

app.findTextPreferences.fillColor = app.activeDocument.swatches.item("red");

y a un binz avec l'éditeur du blog qui convertit mon D majuscule en d minsucule.
il faut absolument active D ocument

#6 Darkstar

  • Guests

Posté 14 June 2010 - 13:04 PM

Merci Loic :)

Le lancement du script s'opère mais en faite le script ne fait que rechercher tout les caractères du document Indesign sans prendre en compte les caractères de couleur rouges.

J'ai remarquer que quand je rentre dans le menu GREP : caractère + la couleur rouge = "+couleur : rouge" et que je lance le script la ma recherche fonctionne correctement vraiment bizarre... :roll:

#7 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 13:35 PM

Voir le messageDarkstar, le 14 June 2010 - 13:04 PM, dit :

Merci Loic :)

Le lancement du script s'opère mais en faite le script ne fait que rechercher tout les caractères du document Indesign sans prendre en compte les caractères de couleur rouges.

J'ai remarquer que quand je rentre dans le menu GREP : caractère + la couleur rouge = "+couleur : rouge" et que je lance le script la ma recherche fonctionne correctement vraiment bizarre... :roll:
Non, rien de bizzarre. Je n'ai pas considéré l'ensemble de ton problème.
Reprenons:

Déjà tu fais une recherche de texte (findText()), ce n'est pas un problème MAIS tu oublies le plus important : tu ne définies aucune recherche via un findWhat. Si bien que le script cherche la valeur par défaut (celle existante dans la boîte de dialogue). Si tu n'as rien, Indesign ne va rien chercher
Donc chercher tout type de texte rouge, celà est-il possible avec un findText() ?
Non, au même titre que ta boite de dialogue, une recherche de texte ne sait chercher qu'une chaîne spécifique de caractères. Seul GREP peut offrir cette possibilité.
Ton script est donc :

//Définition des prefs GREP
app.findGrepPreferences = null;
app.findGrepPreferences.fillColor = "red";
app.findGrepPreferences.findWhat = "(?i)[\\w\\s]+"
/*
(?i) : sans considération de l'italique
[\\w\\s]+ : tout caractère ou espace une ou plusieurs fois
//A noter l'usage d'un deuxième slash qui échappe le second. Comme tu es en js, et que tu manipules des chaînes, le slash est un métacaractère que tu dois convertir en caractère via l'achappement.
Dans la boite de dialogue d'indesign, tu obtiendras [\w\s]+
Alors que la même commande [\w\s]+ en js t'aurait donné [ws]+, soit tout caractère w ou s minuscules :-\
*/
app.findChangeGrepOptions.includeFootnotes = true;

app.findGrep();


#8 Darkstar

  • Guests

Posté 14 June 2010 - 14:15 PM

Merci Loic,

je comprend un peut mieux maintenant.

J'ai une erreur à la ligne 2 : app.findGrepPreferences.fillColor = "red";
Je l'ai remplacer par : app.activeDocument.swatches.item("red");
J'ai relancer le script et rien...

En fin de ligne :

app.findGrep();

Que j'ai remplacer par : alert(app.activeDocument.findGrep().length);

ça marche mais le code est t'il bon selon toi?


Merci de ton aide!

#9 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 14:19 PM

Voir le messageDarkstar, le 14 June 2010 - 14:15 PM, dit :

Merci Loic,

je comprend un peut mieux maintenant.

J'ai une erreur à la ligne 2 : app.findGrepPreferences.fillColor = "red";
Je l'ai remplacer par : app.activeDocument.swatches.item("red");
J'ai relancer le script et rien...

En fin de ligne :

app.findGrep();

Que j'ai remplacer par : alert(app.activeDocument.findGrep().length);

ça marche mais le code est t'il bon selon toi?


Merci de ton aide!

oui, mauvais copier/coller
Effectivement il te faut mettre
app.findGrepPreferences.fillColor = app.activeDocument.swatches.item("red");
La propriété fillColor attend une swatch et pas une string.

app.findGrep() cherche de façon silencieuse. C'est seulement le traitement de cette information qui peut déboucher sur un traitement.
Loic

#10 Darkstar

  • Guests

Posté 14 June 2010 - 14:40 PM

Loic,

J'ai lancer le script modifier avec : app.findGrep();
Mais rien ne se passe, je n'ai aucune alerte de comptage des mots :)

Avec : alert(app.activedocument.findGrep().length);
Cela fonctionne mais est ce que les résultats seront bon?

#11 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 14:49 PM

Voir le messageDarkstar, le 14 June 2010 - 14:40 PM, dit :

Loic,

J'ai lancer le script modifier avec : app.findGrep();
Mais rien ne se passe, je n'ai aucune alerte de comptage des mots :)

Avec : alert(app.activedocument.findGrep().length);
Cela fonctionne mais est ce que les résultats seront bon?
Mais tu m'as lu ou bien ? :-D

app.findGrep() va stocker les résultats dans une array, point barre. C'est à toi de traiter cette info !
C'est ce que tu fais avec alert(app.findGrep().length);
Est-ce que les résultats seront bons ? Ils devraient l'être.
Attention toutefois dans mon expression Grep, j'ai couplé les mots et les espaces.
Par exemple :

"John est allé à la pêche ce matin" ne renvoie qu'un résultat et pas 4 mots.
Si tu as besoin de décomposer, il faut changer l'expression GREP par (?i)\\w+

Après, fais un essai, mets 10 mots en rouge et voies si le script te renvoie bien 10 (avec la correction que je te signale précedemment )
A+ Loic

#12 jmlevy

  • Guests

Posté 14 June 2010 - 18:20 PM

Ou alors je n'ai pas compris la question, mais il me semble qu'on sort l'artillerie lourde pour chasser une mouche, là ! :)
Avec cette recherche, ça fonctionne très bien :
Image attachée: Image 1.png
On remplace par la même chose, et InDesign affiche le nombre de caractères modifiés.
Image attachée: Image 2.png

#13 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 14 June 2010 - 18:53 PM

Voir le messagejmlevy, le 14 June 2010 - 18:20 PM, dit :

Ou alors je n'ai pas compris la question, mais il me semble qu'on sort l'artillerie lourde pour chasser une mouche, là ! :)
Avec cette recherche, ça fonctionne très bien :
Fichier-joint Image 1.png
On remplace par la même chose, et InDesign affiche le nombre de caractères modifiés.
Fichier-joint Image 2.png
Encore un peu de napalm sur votre champ de ruines ? Bien vu;-)

#14 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 14 June 2010 - 21:28 PM

Bonsoir,

S'il s'agit de compter le nombre de mot, \S+ (tout sauf une espace) conviendrait mieux que .
(?i) est un modificateur. Il signifie "casse désactivée" (par défaut, la casse est activé (?-i) en mode grep)
Bonne fin de soirée

#15 Darkstar

  • Guests

Posté 15 June 2010 - 10:50 AM

Merci JM via GREP ça marche sans problème :)
Un grand merci à vous tous pour votre aide!!!

Une dernière petite question concernant la recherche, inclus t-elle les en-têtes et pieds de pages sachant qu'ils sont dans mes gabaris?

Mille fois merci!!!

#16 Darkstar

  • Guests

Posté 15 June 2010 - 11:41 AM

J'ai trouver! méa culpa!
Avec l'option Chercher dans/inclure les gabarits :)
Merci mille fois à vous tous pour votre aide!!!!!!!

#17 jmlevy

  • Guests

Posté 15 June 2010 - 18:39 PM

Voir le messageLaurent Tournier, le 14 June 2010 - 21:28 PM, dit :

S'il s'agit de compter le nombre de mot, \S+ (tout sauf une espace) conviendrait mieux que .
Et oui, bien sûr ! Je suis loin d'avoir saisi toutes les subtilités de GREP !

Voir le messageLaurent Tournier, le 14 June 2010 - 21:28 PM, dit :

(?i) est un modificateur. Il signifie "casse désactivée" (par défaut, la casse est activé (?-i) en mode grep)
Peux-tu en dire plus ? Qu'est-ce que cela change dans ce cas ?
Il faudrait que je me (re)plonge dans ton livre…

Modifié par jmlevy, 15 June 2010 - 18:39 PM.


#18 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 16 June 2010 - 08:52 AM

Bonjour
Pour le (?i), ma remarque venait en précision de celle de Loïc qui, par mégarde, a assimilé ce métacaractère "sans considération de l'italique"
Elle n'a pas d'incidence pour une recherche avec \S+
Bonne journée



2 utilisateur(s) li(sen)t ce sujet

0 membre(s), 2 invité(s), 0 utilisateur(s) anonyme(s)