{"id":56,"date":"2009-04-21T23:19:27","date_gmt":"2009-04-21T21:19:27","guid":{"rendered":"http:\/\/www.dpao.fr\/blog\/?p=56"},"modified":"2013-12-21T15:50:06","modified_gmt":"2013-12-21T13:50:06","slug":"idcolor","status":"publish","type":"post","link":"https:\/\/www.dpao.fr\/blog\/2009\/04\/21\/idcolor\/","title":{"rendered":"InDesign, nettoyage des couleurs"},"content":{"rendered":"<p>Encore un nouveau script \u00e0 base de Javascript et d&rsquo;InDesign&#8230; mais non, je n&rsquo;y suis pas accro ;)<\/p>\n<p>Une grande partie de mon temps est occup\u00e9 par la conversion des couleurs d&rsquo;accompagnement d&rsquo;un document InDesign et le nettoyage du document qui va avec: suppression de couleurs en double, et parce que je suis un peu maniaque sur la fa\u00e7on d&rsquo;organiser son travail nommage des couleurs selon leur composition.<br \/>\nPour le moment, j&rsquo;avais 2 Applescripts qui faisaient bien leur boulot, mais qui dit 2 scripts, dit forc\u00e9ment 2 lancement! CQFD. Alors oui, il \u00e9tait possible de les fusionner, mais c&rsquo;est tout de m\u00eame plus polyvalent de revoir son pannel de scripts pour les rendre encore plus pratiques et multi-plateforme.<\/p>\n<p>Le script se divise en plusieurs segments:<\/p>\n<h2>1e partie: le test de version d&rsquo;application<\/h2>\n<pre lang=\"javascript\">#target indesign\r\nvar IDvers = parseInt(app.version);<\/pre>\n<p>on ne r\u00e9cup\u00e9re que la partie enti\u00e8re de la version de l&rsquo;application<\/p>\n<pre lang=\"javascript\">switch(IDvers) {\r\n\tcase 4 :\r\n\t\tvar mSwatches = app.activeDocument.colors;\r\n\t\tfor (x = 1; x &lt;= 4; x++){updateColors(mSwatches);}\r\n\t\tbreak;\r\n\tcase 5 :\r\n\t\tvar mSwatches = app.activeDocument.swatches;\r\n\t\tupdateColors(mSwatches);\r\n\t\tbreak;\r\n}<\/pre>\n<p>Un petit switch permettant de s&rsquo;occuper des m\u00e9thodes selon la version.<br \/>\nA noter que pour une raison inconnue le script doit \u00eatre \u00e9x\u00e9cuter plusieurs fois sous InDesign CS2&#8230;<\/p>\n<h2>2e partie: le test des Pantone<\/h2>\n<pre lang=\"javascript\">if (mSwatches[i].name.substr (0, 7).toUpperCase() != \"PANTONE\") {\r\n  try {<\/pre>\n<p>On \u00e9vite de traiter les couleurs Pantone en \u00e9liminant ces nuances via leur noms. On lance ensuite un try \/ catch pour \u00e9viter les erreurs de traitement lorsqu&rsquo;on arrive sur les couleurs prot\u00e9g\u00e9es comme celle de rep\u00e9rage ou de [Papier].<\/p>\n<h2>3e partie: le changement de mode et nom<\/h2>\n<pre lang=\"javascript\">mSwatches[i].model = 1886548851; \/\/ = Process\r\nmSwatches[i].space = 1129142603; \/\/ = CMJN\r\nwith (mSwatches[i]){\r\n  mC = Math.round(colorValue[0]);\r\n  mM = Math.round(colorValue[1]);\r\n  mY = Math.round(colorValue[2]);\r\n  mK = Math.round(colorValue[3]);\r\n}<\/pre>\n<p>on change le mod\u00e8le de couleur, ainsi que l&rsquo;espace colorim\u00e9trique, puis on r\u00e9cup\u00e9rer la valeur enti\u00e8re de la composante pour pr\u00e9parer le renommage de la nuance.<\/p>\n<h2>4e partie: le renommage et la fusion<\/h2>\n<pre lang=\"javascript\">try {\r\n  mSwatches[i].name = myName;  }\r\ncatch(err){\r\n  mSwatches.item(myName).merge(mSwatches[i]);  }\r\n}<\/pre>\n<p>dans une boucle try \/ catch, on tente de renommer la nuance, en cas d&rsquo;erreur, la couleur existe, \u00e9tant un doublon on la fusionne avec l&rsquo;existante.<\/p>\n<h2>Conclusion: le script complet<\/h2>\n<pre lang=\"javascript\">#target indesign\r\nvar IDvers = parseInt(app.version);  \/\/ version InDesign CSx\r\n\r\nswitch(IDvers) {\r\n\tcase 4 : \t\/\/ CS2\r\n\t\tvar mSwatches = app.activeDocument.colors;\r\n\t\t\/\/ Hack pour passer plusieurs la m\u00e9thode\r\n\t\tfor (x = 1; x <= 4; x++){updateColors(mSwatches);}\r\n\t\tbreak;\r\n\tdefault :\t\t\/\/ CS3\r\n\t\tvar mSwatches = app.activeDocument.swatches;\r\n\t\tupdateColors(mSwatches);\r\n\t\tbreak;\r\n\t\/*default : \t\/\/ Ni CS2 ni CS3, avertissement\r\n\t\talert('Script test\u00e9 uniquement avec CS2 &#038; CS3');*\/\r\n}\r\n\r\nalert('Fin du traitement');\r\n\t\r\nfunction updateColors(mSwatches) {\r\n\tfor (i = mSwatches.length-1; i >= 0; i--){\r\n\t\t\/\/ si la nuance se nomme \"Pantone xxxx\" on ne fait rien\r\n\t\tif (mSwatches[i].name.substr (0, 7).toUpperCase() != \"PANTONE\") {\r\n\t\t\ttry {\r\n\t\t\t\tmSwatches[i].model = 1886548851; \/\/ 1936748404 = SPOT | 1886548851 = Process | 1919248243 = rep\u00e9rage\r\n\t\t\t\tmSwatches[i].space = 1129142603; \/\/ 1129142603 = CMJN | 1666336578 = RVB\r\n\t\t\t\twith (mSwatches[i]){ \/\/ r\u00e9cup\u00e9ration des composantes CMJN\r\n\t\t\t\t\tmC = Math.round(colorValue[0]);\r\n\t\t\t\t\tmM = Math.round(colorValue[1]);\r\n\t\t\t\t\tmY = Math.round(colorValue[2]);\r\n\t\t\t\t\tmK = Math.round(colorValue[3]);\r\n\t\t\t\t\t}\r\n\t\t\t\tvar myName = \"C=\" + mC + \" M=\" + mM + \" J=\" + mY + \" N=\" + mK;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t\/\/ renommage de la nuance selon sa composition\r\n\t\t\t\t\tmSwatches[i].name = myName;\r\n\t\t\t\t\t}\r\n\t\t\t\tcatch(err){\r\n\t\t\t\t\t\/\/ fusion de la nuance en cours avec l'existante de m\u00eame composition\r\n\t\t\t\t\tmSwatches.item(myName).merge(mSwatches[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\tcatch (e) {}\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Encore un nouveau script \u00e0 base de Javascript et d&rsquo;InDesign&#8230; mais non, je n&rsquo;y suis pas accro ;) Une grande partie de mon temps est occup\u00e9 par la conversion des couleurs d&rsquo;accompagnement d&rsquo;un document InDesign et le nettoyage du document qui va avec: suppression de couleurs en double, et parce que je suis un peu &hellip; <a href=\"https:\/\/www.dpao.fr\/blog\/2009\/04\/21\/idcolor\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">InDesign, nettoyage des couleurs<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[16,18,10,9],"_links":{"self":[{"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/posts\/56"}],"collection":[{"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/comments?post=56"}],"version-history":[{"count":16,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":166,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/posts\/56\/revisions\/166"}],"wp:attachment":[{"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/media?parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/categories?post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dpao.fr\/blog\/wp-json\/wp\/v2\/tags?post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}