Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
768 connectés 

  FORUM HardWare.fr
  Graphisme
  PAO / Desktop Publishing

  numerotation automatique

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

numerotation automatique

n°824862
ACut
Posté le 17-05-2006 à 15:03:39  profilanswer
 
Voir ce message dans le sujet non filtré
 

cayama a écrit :

J'ai fais une première page avec 4 ticket et des blocs texte numérotés de 001 à 004 puis je suis obligé de dupliquer page par page et modifier un par un les numéros. Il y a certainement une méthode plus rapide et qui évite de tout refaire si erreur.


 
Ci-dessous un script JS pour te dépanner.
Il est compatible Indesign CS et CS2, Mac ou Win.
 

Code :
  1. /***************************************************/
  2. /*              DupliTickets.js                    */
  3. /*           tourne sous CS & CS2                  */
  4. /***************************************************/
  5. // !! Toujours sauvegarder votre document AVANT de lancer !!
  6. //----------------------------------------------------------
  7. // GLOBALS
  8. //----------------------------------------------------------
  9. var NUM_PER_PAGE = 4;
  10. var NUM_FORMAT = "000";
  11. var PATTERN = "<([1-9])>"; // les modeles de numeros sont de la forme <n>
  12. //----------------------------------------------------------
  13. // OUTILS
  14. //----------------------------------------------------------
  15. /*int*/ function getPageNb()
  16. //----------------------------------------------------------
  17. {
  18. saisie = prompt("Nombre de tickets à générer", NUM_PER_PAGE);
  19. if (saisie)
  20. {
  21. nTickets = parseInt(saisie);
  22. if ( nTickets<=0 ) return(null);
  23. }
  24. return(Math.ceil(nTickets / NUM_PER_PAGE));
  25. }
  26. /*str*/ function formatNumero(/*str*/ digit, /*int*/ offset)
  27. //----------------------------------------------------------
  28. {
  29. var num = '' + (offset + (digit-0));
  30. var numStr = NUM_FORMAT.substr(num.length) + num;
  31. return(numStr);
  32. }
  33. //----------------------------------------------------------
  34. // METHODES PRINCIPALES
  35. //----------------------------------------------------------
  36. /*void*/ Paragraph.prototype.tryReplaceTicketNum = function(/*int*/ pgNum)
  37. //----------------------------------------------------------
  38. {
  39. var offset = (pgNum-1) * NUM_PER_PAGE;
  40. RE = new RegExp(PATTERN, "gi" );
  41. pText = this.contents;
  42. if ( (results = RE.exec(pText)) != null )
  43. {
  44. ticketNum = formatNumero(results[1], offset);
  45. range = [results.index, results.index + results[0].length - 1];
  46. this.characters.itemByRange(range[0],range[1]).contents = ticketNum;
  47. }
  48. }
  49. /*void*/ Page.prototype.setTicketNums = function(/*int*/ pgNum)
  50. //----------------------------------------------------------
  51. {
  52. var pgItems = this.allPageItems;
  53. for (var i=pgItems.length-1 ; i>=0 ; i--)
  54. if ( pgItems[i] instanceof TextFrame )
  55.  for (var j=pgItems[i].paragraphs.length-1 ; j>= 0 ; j--)
  56.   pgItems[i].paragraphs[j].tryReplaceTicketNum(pgNum);
  57. }
  58. //----------------------------------------------------------
  59. // PROGRAMME
  60. //----------------------------------------------------------
  61. if ( app.documents.length > 0 )
  62. {
  63. var PAGE1 = app.activeDocument.pages.firstItem();
  64. var NPAGES = getPageNb();
  65. if (NPAGES)
  66.  {
  67.  for (p=2 ; p<=NPAGES ; p++)
  68.   {
  69.   pg_p = PAGE1.duplicate(LocationOptions.atEnd);
  70.   pg_p.setTicketNums(p);
  71.   }
  72.  PAGE1.setTicketNums(1);
  73.  }
  74. }
  75. else
  76. alert("Aucun document ouvert!" );


 
MODE D'EMPLOI
 
1) Fais un copier-coller du code dans un fichier nommé par exemple DupliTickets.js
    (tu peux aussi mettre le suffixe jsx pour CS2)
 
2) Place le fichier dans le dossier %InDesign%/Presets/Scripts
    (le script sera alors accessible depuis la palette Scripts d'InDesign)
 
3) Utilisation:
 
- ta page modèle doit être la première page du document;
 
- remplace les numéros indiqués dans la page-modèle par les marqueurs suivants:
  <1>, <2>, <3>, <4>
  (Le programme recherche le motif <n>, où n est entre 1 et 9: le script permet donc de gérer si besoin jusqu'à 9 tickets par page, cf. la variable NUM_PER_PAGE)
 
- ATTENTION: sauvegarde ton document modèle avant de lancer le script, car son action n'est pas réversible
 
- il est possible de moduler les paramètres suivants:
  NUM_PER_PAGE indique le nombre de tickets par page (=4 par défaut)
  NUM_FORMAT indique le nombre de chiffres à utiliser pour former un numéro (="000" par défaut)
 
- une fois lancé, le script te demande le nombre total de tickets à générer. En fait, il en déduit le nombre de pages correspondant et remplit entièrement toutes les pages générées. Par exemple, si tu veux 13 tickets, il va en fait construire 4 pages, d'où 16 tickets.
 
- la complexité des blocs et/ou groupes constitutifs d'un ticket est sans incidence, du moment que le script trouve ses marqueurs <n>. Rien ne t'empêche d'ailleurs de construire un modèle de ticket où la numérotation apparaît à plusieurs endroits, il suffit de répéter <n> partout où c'est utile.
 
Voilà. J'espère que ça te fera gagner du temps.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
mood
Publicité
Posté le 17-05-2006 à 15:03:39  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Graphisme
  PAO / Desktop Publishing

  numerotation automatique

 

Sujets relatifs
décompte automatique des jours en Flashnumérotation des pages indesign
[ Indesign ] renvoie de page automatiqueNumérotation indesign..Help!
Polices gestion automatique par formes?numérotation des pages dans Indesign et saisie de blocs superposés
redimention automatique d'imagescomment faire une video automatique sur bryce 5?
Collez des images sur une meme pages de maniere automatique ?colorisation automatique...
Plus de sujets relatifs à : numerotation automatique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR