[ Indesign ] renvoie de page automatique

renvoie de page automatique [ Indesign ] - PAO / Desktop Publishing - Graphisme

Marsh Posté le 05-04-2006 à 18:17:44    

:hello:
 
voila dans un document indesign je cherche a faire un renvoie de page automatique.
c''est a dire que j'ai par exemple :

Citation :

si vous vouluez en savoir plus sur telle chose aller a la page 28


 
hors si je rajoute du contenu a mon document l'element en question ne sera plus page 28
comment puis je faire pour que le changement de page ( lié a un titre specifique) se fasse automatiquement?
 
merci


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 05-04-2006 à 18:17:44   

Reply

Marsh Posté le 06-04-2006 à 10:03:32    

personne ne sait? :/


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 06-04-2006 à 10:15:26    

jamais utilisé InDesign [:spamafote]
 
[mode post kisérarien off]


---------------
OUAIB | FLICKR | HFR | 500 PX
Reply

Marsh Posté le 06-04-2006 à 10:32:58    

[mode je prends la modote pour une huitre ON]
 
J'imagine que le "folio de mention de tourne automatique" n'est pas utile dans ton cas ? (moi pas connaître, je viens juste de pêcher ça dans l'aide d'Indesign).
 
[mode je prends la modote pour une huitre OFF]
 
Sinon Word fait ça très bien...  :whistle: si Indesign ne le fait pas, ça voudrait dire que le logiciel marriant le meilleur des deux mondes n'existe pas encore...  :(

Reply

Marsh Posté le 06-04-2006 à 10:51:13    

oui j'aid eja essayé mais du coup ça me renvoie juste a la page suivante...
donc dans l'ideal il faudrait que ça renvoie a un bloc specifique "ancré" si je puis dire


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 06-04-2006 à 10:59:48    

tu peux le dire  :jap:


---------------
OUAIB | FLICKR | HFR | 500 PX
Reply

Marsh Posté le 07-04-2006 à 00:53:32    

aozora a écrit :

oui j'aid eja essayé mais du coup ça me renvoie juste a la page suivante...
donc dans l'ideal il faudrait que ça renvoie a un bloc specifique "ancré" si je puis dire


 
Ah zut, en parcourant ce chapitre de l'aide il me semblait que l'on pouvait renvoyer à n'importe quelle page et pas seulement à la page suivante  :(  
 
Ça doit bien exister quelque part ce genre de possibilité, ne me dites pas que ceux qui font des mises en page de bouquins se tapent des vérifications de renvois manuelles !  :heink: C'est déjà pénible de vérifier si Word le fait correctement, mais j'ai de la peine à imaginer de faire ça à la mimine  :D

Reply

Marsh Posté le 07-04-2006 à 00:54:20    

bah perso je n'y suis pas arrivée mais bon peut etre que je suis pas doué
si tu y comprend + que moi hesites pas :D


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 07-04-2006 à 01:16:49    

Ouhla non, certainement pas, j'apprends ça sur le tas, je me débrouille mais c'est tout  [:airforceone]

Reply

Marsh Posté le 07-04-2006 à 01:22:41    

bah la pareil c des fonctions que je n'ai jamais utilisé :D


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 07-04-2006 à 01:22:41   

Reply

Marsh Posté le 09-04-2006 à 05:33:48    

aozora a écrit :

:hello:
 
voila dans un document indesign je cherche a faire un renvoie de page automatique.
c''est a dire que j'ai par exemple :

Citation :

si vous vouluez en savoir plus sur telle chose aller a la page 28


 
hors si je rajoute du contenu a mon document l'element en question ne sera plus page 28
comment puis je faire pour que le changement de page ( lié a un titre specifique) se fasse automatiquement?
 
merci


 
C'est un problème auquel je m'étais attaqué il y a quelque temps. Le système de renvois de pages d'InDesign est effectivement assez limité (page suivante ou page précédente) et je ne pense pas que la version CS2 y ait changé grand chose par l'intermédiaire des objets ancrés. Les spécialistes apporteront peut-être des solutions jusqu'alors invisibles dans l'interface utilisateur (passage par le balisage XML?), mais pour ma part je n'ai trouvé ma planche de salut qu'en utilisant les signets (bookmarks) et le javascript intégré.
 
Le principe est assez simple:
 
1) Tu crées un signet aux différents points d'insertion que tu souhaites indexer par ton système de renvoi. C'est l'étape la plus importante. Rien ne t'empêche de créer ces signets a posteriori dans ton document, du moment que tu leur donnes un nom cohérent (car tu vas utiliser ce nom pour les renvois).
Par exemple, un bloc-texte quelque part dans ton document comporte le titre "Chapitre 5". Cale le curseur au début du texte de ce titre et insère un signet nommé "CHAP 05".
 
2) N'importe où ailleurs, tu souhaites faire un renvoi vers la page du fameux Chapitre 5. Mais cette page est susceptible de varier au gré des changements de maquette. Heureusement, le signet que tu as posé, lui, va rester rivé au bon endroit. Tu vas donc indiquer ton renvoi par un "code" sur lequel on fera mouliner notre script. Ce code (dont la syntaxe est tout à fait arbitraire) consiste simplement à indiquer en lieu et place du numéro de page désiré le nom exact du signet entre doubles-crochets:
 
 Voir aussi page <<CHAP 05>>
 
NB. Si par extraordinaire tu utilises des doubles-crochets ailleurs dans ton document, il sera préférable de changer le motif de la regexp (v. infra), sachant toutefois que le script laisse le texte inchangé s'il ne reconnaît par le nom d'un signet existant.
 
3) Sauvegarder impérativement le document avant d'aller plus loin! En effet, le script ci-dessous procède à la conversion des renvois "codés" en renvois "effectifs" (document final), donc si tu veux revenir à la version de travail, tu connais la chanson...
 
4) Utiliser le script suivant:
 

Code :
  1. /***************************************************/
  2. /*              JumpPage.js                        */
  3. /*  Script de transfo renvois codés -> nums pages  */
  4. /*                 tourne sous CS & CS2            */
  5. /***************************************************/
  6. //----------------------------------------------------------
  7. // GLOBALS
  8. //----------------------------------------------------------
  9. // les ref. aux signets sont de la forme <<NOMSIGNET>>
  10. var PATTERN = "<<([^>]+)>>";
  11. var APP_INT_VERSION = parseInt(app.version);
  12. //----------------------------------------------------------
  13. // OUTILS
  14. //----------------------------------------------------------
  15. // [InsertionPoint|Text].prototype.getParentTextFrame
  16. //----------------------------------------------------------
  17. // Extrait le bloc-texte parent d'un objet
  18. // Text ou InsertionPoint selon la version d'InDi
  19. if (APP_INT_VERSION >=4 )
  20. {
  21. /*obj*/  Object.prototype.getParentTextFrame = function()
  22.    {return(this.parentTextFrames[0]);}
  23. }
  24. else
  25. {
  26. /*obj*/  Object.prototype.getParentTextFrame = function()
  27.    {return(this.parentTextFrame);}
  28. }
  29. /*str*/ Bookmark.prototype.getPage = function()
  30. //----------------------------------------------------------
  31. // Renvoie le nom de la page d'ancrage du signet
  32. // (selon sa propriete destination)
  33. // Ret. vide en cas d'erreur
  34. {
  35. switch(this.destination.constructor.name)
  36. {
  37. case "HyperlinkTextDestination":
  38.  return(this.destination.destinationText.getParentTextFrame().parent.name);
  39. case "HyperlinkPageDestination":
  40.  return(this.destination.destinationPage.name);
  41. case "HyperlinkExternalPageDestination":
  42.  return(""+this.destination.destinationPageIndex);
  43. case "Page":
  44.  return(this.destination.name);
  45. default:
  46.  return("" );
  47. }
  48. }
  49. /*str*/ Document.prototype.getBookmarkPage = function(/*str*/ bmkName)
  50. //----------------------------------------------------------
  51. // Renvoie le nom de la page d'ancrage du signet nomme bmkName
  52. // Ret. vide si aucun signet ne porte ce nom
  53. {
  54. try {
  55. return(this.bookmarks.item(bmkName).getPage());
  56. }
  57. catch(ex)
  58. {
  59. return("" );
  60. }
  61. }
  62. //----------------------------------------------------------
  63. // ROUTINE PRINCIPALE
  64. //----------------------------------------------------------
  65. /*int*/ Paragraph.prototype.replaceJumpMarks = function()
  66. //----------------------------------------------------------
  67. // Recherche dans le paragraphe le motif <<NOMSIGNET>> et
  68. // le remplace par la page d'angrage dudit signet s'il existe
  69. {
  70. RE = new RegExp(PATTERN, "gi" );
  71. pText = this.contents;
  72. pNewText = pText;
  73. rgOffset = 0;
  74. count = 0;
  75. while ( (results = RE.exec(pText)) != null )
  76. {
  77. pg = DOC.getBookmarkPage(results[1]);
  78. if ( pg != "" )
  79.  {
  80.  range = [results.index + rgOffset, rgOffset + RE.lastIndex-1];
  81.  this.characters.itemByRange(range[0],range[1]).contents = pg;
  82.  rgOffset = pg.length - results[0].length;
  83.  count++;
  84.  }
  85. }
  86. return(count);
  87. }
  88. //----------------------------------------------------------
  89. // PROGRAMME
  90. //----------------------------------------------------------
  91. if ( app.documents.length > 0 )
  92. {
  93. var CPT = 0;
  94. var DOC = app.activeDocument;
  95. for(i=0 ; i<DOC.stories.length ; i++)
  96.  for(j=0 ; j<DOC.stories[i].paragraphs.length ; j++)
  97.   CPT += DOC.stories[i].paragraphs[j].replaceJumpMarks();
  98. alert("Nombre de renvois résolus et remplacés: " + CPT);
  99. }
  100. else
  101. alert("Aucun document ouvert!" );


 
Le motif à rechercher est donné dans var PATTERN = "<<([^>]+)>>";
C'est une regexp qui cherche tout ce qui est entre double-crochets et opère une sous-capture du renvoi codé. Le script boucle sur tous les paragraphes de tous les articles. Plusieurs renvois peuvent apparaître dans le même paragraphe, d'où mes petits ajustements d'offset pendant le remplacement. Le reste est assez simple: étant donné un renvoi codé, on cherche si un signet correspond, puis, on extrait la page d'ancrage de ce signet grâce aux bons offices de la méthode Bookmark::getPage() conçue à cet effet.
 
Point important: c'est la propriété Page::name qui est crachée en sortie, laquelle coïncide habituellement avec le numéro de la page en question, sauf lorsqu'InDesign est paramétré pour afficher le nom des folios par sections. A vérifier.
 
Rappel: pour faire marcher tout ça, on installe le fichier .js ou .jsx dans %InDesign%/Presets/Scripts/
 
 
En espérant que ça servira à quelqu'un... faute de meilleure solution.
 
Marc


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 09-04-2006 à 09:09:49    

oula genial tout ça !
merci beaucoup pour le temps passer pour l'explication :)
 
oki donc apres avoir cherché pas mal de temps j'en suis venue aussi a la conclusion que c t pas possible via les fonctionnalité de indesign
au passage j'ignore qi cela est possible sous xpress?
 
donc bon j'avais remarqué cette fenetre de script sans vraiment m'y attacher :D
je pensais eventuellement qu'il fallait que je m'oriente vers du XLM de façon a automatisé toute mise a jour... le soucis c'est que je n'ai pas developpé mon document dans cet axe :D
 
le script que tu montre au dessus tu la realisé avec indesign ou bien tu la fait toi meme avec un editeur?
 
 
en tout cas je vais essayer lundi et je te dis :)


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 09-04-2006 à 12:49:53    

aozora a écrit :

au passage j'ignore si cela est possible sous xpress?


[mode guerre_civile]
En général, ce qui est impossible sous InDesign l'est a fortiori sous XPress ;-)
[/mode guerre_civile]
Cependant, je ne doute pas qu'il existe des plug-ins XPress pour gérer ce type de fonctionnalité.
 

aozora a écrit :

le script que tu montre au dessus tu la realisé avec indesign ou bien tu la fait toi meme avec un editeur?


Eh bien, un script ce n'est que du texte pur. Tu peux utiliser n'importe quel éditeur. Il suffit ensuite d'enregistrer le fichier avec l'extension .js (CS ou CS2). Si tu es sous CS2, le module d'édition/débogage appelé ExtendScript Toolkit offre un éditeur intégré et des fonctionnalités supplémentaires. Les scripts JS portent alors l'extension .jsx. Le code que je te propose fonctionne sous CS et CS2.
 
NB: InDesign permet de scripter dans d'autres langages (AS sous Mac, VBS sous Win) mais seul JS est multiplateforme. L'apprentissage du langage (pour ceux qui n'ont jamais codé en Javascript) et la compréhension du modèle objet InDesign sont évidemment des prérequis pour débuter dans l'art du scripting. Il y a un doc de référence dans les dossiers d'aide d'InDesign, mais je ne peux que recommander les liens suivants:
- [EN] Adobe Indesign Scripting Forum (inscription requise, gratuite)
- [EN] Dave Saunders blog
- [FR] InDiScripts (ça c'est sur mon site perso)
 
Le site et les forums de Branislav Milic proposent aussi des pistes intéressantes, mais il faut dire que les ressources en français sont encore assez rares dans ce domaine.
 
@+
Marc


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 09-04-2006 à 13:06:58    

[mode guerre civile enclenchée phase 2]ohh dis donc toi :o dis aps du mal de indidi alors que xpressc tout bugger :D
[/mode guerre civile enclenchée phase 2]
 
ah oki ya deja un module sur indesign pour generer cela
c cool
 
j'ai deja fait un peu de javascript ( j'ai mem un bouquin qui traine quelques parts et qui doit etre pleins de poussiere :D)
 
bon bah je vais avoir de koi faire pour m'arracher les cheveux lundi :o


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 10-04-2006 à 09:57:35    

ça marche impeccablement !!
vraiment un grand merci :)
super bien expliquer j'ai reussi du 1er coup ( et crois moi que je suis polio :o)


---------------
Flickr Neverends | Neverends | Landolfi : Un bucheron dans un corps de princesse
Reply

Marsh Posté le 10-04-2006 à 11:38:28    

aozora a écrit :

...et crois moi que je suis polio :o)


 
Mais non, mais non, tu t'fais du mal.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 27-03-2009 à 13:52:53    

Heu... Salut!
Niveau Polio, je pense prétendre au titre de championne universelle toutes catégories, et effectivement, je ne comprend pas grand chose au solutions énoncées ci-dessus... Mais est-ce que les choses ont changé depuis 2006? est-ce qu'on peut faire ça (un renvoi de page tout couillon du sommaire vers les pages concernées genre) sur un pdf exporté depuis InDesign? Genre avec Acrobat, à coup de signets ou autre?

Reply

Marsh Posté le 15-04-2009 à 02:55:51    

Bonjour à tous,
 
Pour ceux qui cherchent des solutions dans cette voie, j'ai utilisé le script de ACut et l'ai un peu transformé. (Merci ACut !)
 
Tout est expliqué sur mon blog :
http://blog.polygonia.fr/2009/04/i [...] grace.html
 
N'hésitez pas à y laisser des commentaires !
 
A bientôt !

Reply

Marsh Posté le 14-11-2011 à 18:23:04    

J'ai cherché pas mal de temps la solution sans savoir que InDesign CS4 la possédée…
http://www.adobe.com/fr/designcent [...] 24_id.html
 
Merci quand même pour ceux qui n'ont pas envie de mettre à jour leur CS comme des esclaves…

Reply

Marsh Posté le 14-11-2011 à 18:40:14    

de rien, le dernier post a juste deux ans mais c'est pas grave merci quand meme :)


---------------
Je sais que je plais pas à tout le monde... mais quand je vois à qui je plais pas... je me demande si ça me dérange vraiment
Reply

Marsh Posté le 07-09-2021 à 11:19:49    

Bonjour à toutes et tous,
 
Travaillant personnellement sur Indesign CS3 et ne trouvant pas une méthode efficace pour faire un renvoi de page dynamique, je suis tombé sur ce sujet que je déterre !
 
J'ai appliqué la méthode javascript proposée par "Acut".
 
Quand je lance le script j'ai le message suivant :
 
Javascript erreur : 45
Chaîne de l'erreur : objet incorrect
Source : switch(this.destination.constructor.name)
 
Si vous avez une idée, je suis preneur !
Nico

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed