Guide des scripts

Commentaires

Transcription

Guide des scripts
Guide des scripts
®
®
Adobe InDesign CS2
Adobe InDesign CS2 Guide des scripts
© 2005 Adobe Systems Incorporated. Tous droits réservés.
AVIS : toutes les informations contenues dans le présent document sont la propriété d’Adobe Systems Incorporated. Aucune partie de cette
publication (qu’elle soit sur support papier ou électronique) ne peut être reproduite, enregistrée ou transmise sous quelque forme que ce soit,
par quelque moyen que ce soit, électronique, mécanique ou autre, sans l’autorisation écrite préalable d’Adobe Systems Incorporated.
Le logiciel décrit dans ce document est fourni sous licence et ne peut être utilisé ou copié que conformément à la licence.
Cette publication et les informations qu’elle contient sont fournies EN L’ETAT. Elles peuvent être modifiées sans préavis et ne constituent pas
un engagement de la part d’Adobe Systems Incorporated. Adobe Systems Incorporated ne peut être tenu pour responsable des erreurs ou
des inexactitudes apparaissant dans les informations fournies par ce guide, n’émet aucune garantie (expresse, implicite ou légale) quant à la
présente publication, et décline expressément toute garantie de qualité marchande, d’adaptation à un usage particulier et de non-violation des
droits de tiers.
Toutes les références à des noms de société dans les modèles cités en exemple sont indiquées uniquement à des fins de démonstration et ne se
réfèrent à aucune organisation existante.
Adobe, le logo Adobe, Acrobat, Adobe PDF, Adobe Creative Suite, Illustrator, InDesign, InCopy, GoLive et Photoshop sont des marques ou des
marques déposées d’Adobe Systems Incorporated aux Etats-Unis et/ou dans d’autres pays.
Apple, Mac, Macintosh et Mac OS sont des marques ou des marques déposées d’Apple Computer, Inc., aux Etats-Unis et dans d’autres pays.
Microsoft et Windows sont des marques ou des marques déposées de Microsoft Corporation aux Etats-Unis et dans d’autres pays. UNIX est
une marque déposée aux Etats-Unis et dans d’autres pays, concédée sous licence exclusive par X/Open Company, Ltd.
Toutes les autres marques citées sont la propriété de leurs détenteurs respectifs.
Si ce guide est distribué avec un logiciel comprenant un accord avec l’utilisateur final, ce guide, ainsi que le logiciel qu’il décrit, sont fournis
sous licence et ne peuvent être utilisés ou copiés qu’en accord avec les termes de cette licence. Sauf autorisation spécifiée dans la licence,
aucune partie de ce guide ne peut être reproduite, enregistrée ou transmise sous quelque forme que ce soit, par quelque moyen que ce soit,
électronique, mécanique ou autre, sans l’autorisation écrite préalable d’Adobe Systems Incorporated. Veuillez noter que le contenu de ce guide
est protégé par des droits d’auteur, même s’il n’est pas distribué avec un logiciel accompagné d’un contrat de licence pour l’utilisateur final.
Les informations contenues dans ce document sont données à titre purement indicatif. Elles peuvent être modifiées sans préavis et ne
constituent pas un engagement de la part d’Adobe Systems Incorporated. Adobe Systems Incorporated ne peut être tenu pour responsable des
erreurs ou des inexactitudes apparaissant dans les informations fournies par ce guide.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, Californie 95110, Etats-Unis.
Adobe InDesign CS2 Guide des scripts
Sommaire
Sommaire
1
Introduction................................................................. 1
Que contient ce guide ? .............................................................................................. 1
A qui est destiné ce guide ? ....................................................................................... 1
Conditions préalables .................................................................................................. 2
JavaScript ....................................................................................................................................................2
Macintosh ...................................................................................................................................................2
Windows .....................................................................................................................................................2
Comment utiliser les scripts de ce guide ? ........................................................... 2
Copie d’exemples avec des lignes longues ................................................................................3
Exécution de fichiers JavaScript .......................................................................................................3
Informations complémentaires ................................................................................ 4
2
Ressources de script d’InDesign en ligne.....................................................................................4
Introduction aux scripts ............................................. 5
Introduction aux scripts .............................................................................................. 5
Qu’est-ce que le script ?........................................................................................................................5
Pourquoi développer des scripts ?..................................................................................................6
Qu’en est-il des macros ?......................................................................................................................6
Lecture des fichiers de scripts ................................................................................... 7
Insertion de commentaires ................................................................................................................7
Lignes longues en AppleScript et VBScript.................................................................................7
Lignes longues en JavaScript ............................................................................................................8
Objets et classes ............................................................................................................ 8
Objets ...........................................................................................................................................................8
Référencement d’objets.......................................................................................................................9
Valeurs et variables ....................................................................................................... 9
Valeurs ..........................................................................................................................................................9
Variables ....................................................................................................................................................10
Noms de variables ................................................................................................................................11
Affectation de valeurs à des variables .........................................................................................11
Variables de tableau de données ..................................................................................................12
Conversion de valeurs d’un type à un autre.............................................................................12
Localisation du type de valeur d’une variable.........................................................................13
Opérateurs ..................................................................................................................... 14
Méthodes ....................................................................................................................... 14
i
ii
Sommaire
Adobe InDesign CS2 Guide des scripts
Structures de contrôle ............................................................................................... 15
Instructions conditionnelles ............................................................................................................15
Boucles .......................................................................................................................................................16
3
Sous-routines et gestionnaires ............................................................................... 17
Initiation aux scripts InDesign ............................... 19
Mesures et positionnement..................................................................................... 19
Coordonnées ..........................................................................................................................................19
Unités de mesure ................................................................................................................................. 20
Modèle d’objet de document InDesign .............................................................. 21
Présentation du modèle d’objet InDesign ................................................................................21
Votre premier script InDesign ................................................................................. 22
Ajout de caractéristiques à « Hello World » ........................................................ 25
Ajout d’une interface utilisateur à « Hello World » ........................................... 29
Présentation des boîtes de dialogue .......................................................................................... 29
Ajout de l’interface utilisateur ................................................................................ 30
Création d’une interface utilisateur plus complexe ..............................................................33
Gestion des erreurs..................................................................................................... 38
Utilisation des palettes pour gérer des scripts ..................................................40
Utilisation de la palette Scripts ...................................................................................................... 40
Utilisation de la palette Intitulé de script ...................................................................................41
Tests et dépannage .................................................................................................... 41
4
Débogage d’un AppleScript ............................................................................................................41
Débogage d’un VBScript ...................................................................................................................42
Débogage d’un JavaScript................................................................................................................42
Utilisation des fonctions et outils ExtendScript.... 43
Outils ExtendScript ..................................................................................................... 43
Configuration de la fenêtre Outils ExtendScript ................................................................... 44
Sélection d’une cible de débogage .............................................................................................45
Sélection des scripts .......................................................................................................................... 46
Suivi des données .................................................................................................................................47
Console JavaScript .............................................................................................................................. 48
Editeur de scripts .................................................................................................................................. 49
Débogage dans l’environnement Outils ExtendScript ...................................................... 50
Profilage.................................................................................................................................................... 54
Propriétés de l’objet Dollar ($) .........................................................................................................55
Fonctions de l’objet Dollar ($)......................................................................................................... 56
Objet Reflection .................................................................................................................................. 58
Objet ReflectionInfo ...........................................................................................................................59
Valeurs des variables dans les chaînes localisées ...................................................................61
Activation de la localisation automatique.................................................................................61
Noms de langue ....................................................................................................................................62
Test de la localisation...........................................................................................................................62
Fonction alert globale........................................................................................................................ 64
Fonction confirm globale................................................................................................................. 64
Fonction prompt globale ................................................................................................................. 65
Objet UnitValue..................................................................................................................................... 66
Conversion de valeurs en pixels et de pourcentages ......................................................... 68
Calcul avec des valeurs d’unité ...................................................................................................... 68
Directives de prétraitement ............................................................................................................ 69
Importation et exportation de scripts.........................................................................................71
Surcharge d’opérateurs ............................................................................................ 72
Indicateurs d’application et d’espace de noms................................................. 73
Adobe InDesign CS2 Guide des scripts
Sommaire
Indicateurs d’application .................................................................................................................. 73
Indicateurs d’espace de noms.........................................................................................................74
5
Emplacements des scripts et vérification de l’installation
de l’application............................................................................................................. 74
Utilisation de documents dans AppleScript .......... 77
Notions de base de la gestion de documents................................................... 78
Création d’un document ...................................................................................................................78
Ouverture d’un document................................................................................................................78
Fermeture d’un document ...............................................................................................................79
Enregistrement d’un document.....................................................................................................79
Notions de base de la mise en page .....................................................................80
Définition du format de page et de la longueur du document ..................................... 80
Définition du fond perdu et de la ligne-bloc ...........................................................................81
Configuration des marges et des colonnes ............................................................................. 82
Modification de l’aspect de la table de montage ............................................84
Utilisation des repères et des grilles .....................................................................84
Définition des repères........................................................................................................................ 84
Configuration des préférences de grille .................................................................................... 85
Magnétisme des repères et des grilles....................................................................................... 86
Modification des unités de mesure et de la règle ............................................86
Définition et application des paramètres prédéfinis de document .......... 87
Création d’un paramètre prédéfini par copie de valeurs ...................................................87
Création d’un paramètre prédéfini à partir de nouvelles valeurs ................................. 88
Utilisation d’un paramètre prédéfini........................................................................................... 88
Configuration des planches types......................................................................... 89
Définition des paramètres par défaut de mise en forme de texte .............90
Définition des paramètres de texte par défaut de l’application .................................... 90
Configuration des paramètres par défaut du document actif ........................................92
Utilisation des paramètres de texte par défaut ......................................................................92
Ajout de métadonnées XMP ................................................................................... 93
Création d’un modèle de document .................................................................... 93
Impression d’un document...................................................................................... 97
Impression à l’aide de groupes de pages ..................................................................................97
Configuration des préférences d’impression...........................................................................97
Utilisation des impressions prédéfinies ...................................................................................100
Création d’impressions prédéfinies à partir des préférences d’impression ...........100
Exportation d’un document au format PDF ....................................................105
Utilisation des options d’exportation PDF actuelles..........................................................105
Configuration des options d’exportation PDF .....................................................................105
Exportation d’un groupe de pages ...........................................................................................107
Exportation de pages individuelles...........................................................................................107
Exportation de pages au format EPS ..................................................................108
6
Exportation de toutes les pages .................................................................................................108
Exportation d’un groupe de pages ...........................................................................................108
Exportation avec dénomination de fichier ............................................................................109
Utilisation de documents dans JavaScript ............111
Notions de base de la gestion de documents................................................. 112
Création d’un document .................................................................................................................112
Ouverture d’un document..............................................................................................................112
Fermeture d’un document .............................................................................................................112
Enregistrement d’un document...................................................................................................113
iii
iv
Sommaire
Adobe InDesign CS2 Guide des scripts
Notions de base de la mise en page ................................................................... 114
Définition du format de page et de la longueur du document ....................................114
Définition du fond perdu et de la ligne-bloc .........................................................................114
Configuration des marges et des colonnes ............................................................................115
Modification de l’aspect de la table de montage .......................................... 117
Utilisation des repères et des grilles ................................................................... 117
Définition des repères.......................................................................................................................117
Configuration des préférences de grille ...................................................................................119
Magnétisme des repères et des grilles......................................................................................119
Modification des unités de mesure et de la règle .......................................... 119
Définition et application des paramètres prédéfinis de document ........120
Création d’un paramètre prédéfini par copie de valeurs ................................................ 120
Création d’un paramètre prédéfini à partir de nouvelles valeurs ............................... 121
Utilisation d’un paramètre prédéfini......................................................................................... 122
Configuration des planches types.......................................................................122
Définition des paramètres par défaut de mise en forme de texte ...........123
Définition des paramètres de texte par défaut de l’application .................................. 123
Configuration des paramètres par défaut du document actif ..................................... 125
Utilisation des paramètres de texte par défaut ................................................................... 125
Ajout de métadonnées XMP ................................................................................. 126
Création d’un modèle de document .................................................................. 126
Impression d’un document....................................................................................129
Impression à l’aide de groupes de pages ............................................................................... 130
Configuration des préférences d’impression........................................................................ 130
Utilisation des impressions prédéfinies ................................................................................... 133
Création d’impressions prédéfinies à partir des préférences d’impression ........... 133
Exportation d’un document au format PDF ....................................................138
Utilisation des options d’exportation PDF actuelles.......................................................... 138
Configuration des options d’exportation PDF et exportation
de pages individuelles ..................................................................................................................... 138
Exportation d’un groupe de pages ...........................................................................................140
Exportation de pages au format EPS ..................................................................140
7
Exportation de toutes les pages ................................................................................................. 141
Exportation d’un groupe de pages ........................................................................................... 141
Contrôle des options d’exportation .......................................................................................... 141
Utilisation de documents dans VBScript..............143
Notions de base de la gestion de documents.................................................144
Création d’un document ................................................................................................................144
Ouverture d’un document.............................................................................................................144
Fermeture d’un document ............................................................................................................ 145
Enregistrement d’un document.................................................................................................. 145
Notions de base de la mise en page ...................................................................146
Définition du format de page et de la longueur du document ...................................146
Définition du fond perdu et de la ligne-bloc ........................................................................146
Configuration des marges et des colonnes ...........................................................................148
Modification de l’aspect de la table de montage ..........................................149
Utilisation des repères et des grilles ...................................................................150
Définition des repères...................................................................................................................... 150
Configuration des préférences de grille .................................................................................. 152
Magnétisme des repères et des grilles..................................................................................... 152
Modification des unités de mesure et de la règle .......................................... 152
Adobe InDesign CS2 Guide des scripts
Sommaire
Définition et application des paramètres prédéfinis de document ........ 153
Création d’un paramètre prédéfini par copie de valeurs ................................................ 153
Création d’un paramètre prédéfini à partir de nouvelles valeurs ...............................154
Utilisation d’un paramètre prédéfini......................................................................................... 155
Configuration des planches types....................................................................... 155
Définition des paramètres par défaut de mise en forme de texte ...........156
Définition des paramètres de texte par défaut de l’application .................................. 156
Configuration des paramètres par défaut du document actif ..................................... 159
Utilisation des paramètres de texte par défaut ................................................................... 159
Ajout de métadonnées XMP ................................................................................. 159
Création d’un modèle de document ..................................................................160
Impression d’un document....................................................................................164
Impression à l’aide de groupes de pages ...............................................................................164
Configuration des préférences d’impression........................................................................165
Création d’impressions prédéfinies à partir des préférences d’impression ...........168
Exportation d’un document au format PDF .................................................... 170
Utilisation des options d’exportation PDF actuelles.......................................................... 170
Configuration des options d’exportation PDF ..................................................................... 170
Exportation d’un groupe de pages ........................................................................................... 171
Exportation de pages individuelles........................................................................................... 172
Exportation de pages au format EPS .................................................................. 173
Exportation de toutes les pages ................................................................................................. 173
Exportation d’un groupe de pages ........................................................................................... 173
Contrôle d’autres options d’exportation................................................................................. 173
v
vi
Sommaire
Adobe InDesign CS2 Guide des scripts
Adobe InDesign CS2 Guide des scripts
1
Introduction
1
Introduction
Si vous lisez ceci c’est que vous avez découvert la fonction la plus puissante d’Adobe® InDesign® CS2.
Aucune autre fonction (outil, palette ou boîte de dialogue visible sur l’interface utilisateur du programme)
n’est aussi rapide, facile et économique que le script.
Que contient ce guide ?
Ce guide contient les chapitres suivants :







Chapitre 1, « Introduction » : ce chapitre donne des informations générales sur ce guide, répertorie les
conditions préalables nécessaires pour utiliser InDesign et fournit des astuces permettant de copier les
exemples de scripts de ce guide dans un éditeur de scripts.
Chapitre 2, « Introduction aux scripts » : ce chapitre est une présentation rapide des concepts généraux
de programmation de scripts. Il est principalement destiné aux personnes qui n’ont jamais créé de
scripts et à celles qui ne connaissent pas les langages de script pris en charge par InDesign.
Chapitre 3, « Initiation aux scripts InDesign » : ce chapitre rassemble des informations générales
indispensables pour créer des scripts pour InDesign. Il donne également des exemples simples
d’opérations de création de script.
Chapitre 4, « Utilisation des fonctions et outils ExtendScript » : ce chapitre présente des outils pour
JavaScript, notamment le débogage et la communication entre applications.
Chapitre 5, « Utilisation de documents dans AppleScript » : ce chapitre donne des exemples
AppleScript pour la plupart des opérations nécessaires à l’utilisation de documents InDesign.
Chapitre 6, « Utilisation de documents dans JavaScript » : ce chapitre donne des exemples JavaScript
pour la plupart des opérations nécessaires à l’utilisation de documents InDesign.
Chapitre 7, « Utilisation de documents dans VBScript » : ce chapitre donne des exemples VBScript pour
la plupart des opérations nécessaires à l’utilisation de documents InDesign.
A qui est destiné ce guide ?
Ce guide est destiné aux personnes qui souhaitent créer des scripts simples pour améliorer leur
productivité, qu’elles aient ou non déjà créé un script, comme aux créateurs de scripts chevronnés
souhaitant en savoir plus sur la création de scripts InDesign.
2
Introduction
Adobe InDesign CS2 Guide des scripts
Conditions préalables
Le langage utilisé pour écrire des scripts dépend du système de script de la plate-forme sur laquelle
vous travaillez : VBScript pour Microsoft® Windows®, AppleScript pour Mac OS® sur Apple® Macintosh®
ou JavaScript pour les deux plates-formes. Bien que les systèmes d’écriture de script diffèrent, leur
fonctionnement avec InDesign est très similaire. Les exemples de script contenus dans ce manuel sont
donnés pour tous ces langages. La conversion d’un script d’un langage à un autre est un procédé assez
simple.
JavaScript
InDesign prend en charge JavaScript pour le script multiplate-forme sous Mac OS et Windows. La prise
en charge de JavaScript par InDesign repose sur l’implémentation de JavaScript pour Adobe appelée
ExtendScript. L’interprète ExtendScript est conforme à la norme ECMA 262 en vigueur pour JavaScript.
Toutes les fonctions de langage de JavaScript 1.5 sont prises en charge, y compris les expressions try/
catch/finally, les opérateurs d’égalité et les nouveaux opérateurs instanceof et in. Adobe GoLive® ainsi
que d’autres produits Adobe utilisent également l’interprète ExtendScript JavaScript.
Macintosh
Pour utiliser le script d’InDesign sur Macintosh, vous pouvez utiliser soit JavaScript soit AppleScript. Pour
écrire des AppleScripts, vous devez posséder AppleScript version 1.6 ou supérieure, ainsi qu’un éditeur
de scripts AppleScript. AppleScript est fourni avec tous les systèmes Apple et peut être téléchargé
gratuitement à partir du site Web d’Apple. L’éditeur de scripts d’Apple est fourni avec Mac OS ; des
éditeurs de script tiers, tels que Script Debugger (de Late Night Software, http://www.latenightsw.com),
sont également disponibles.
Windows
Pour utiliser le script d’InDesign sous Windows, vous pouvez utiliser soit JavaScript soit une version de
Microsoft Visual Basic, telle que VBScript. Pour créer des scripts InDesign à l’aide de VBScript, un éditeur de
texte (Bloc-notes, par exemple) vous suffira.
Parmi les autres versions de Visual Basic, citons notamment Visual Basic 5 Control Creation Edition (CCE),
Visual Basic 6, Visual Basic .NET, ainsi que toute autre application contenant Visual Basic for
Applications (VBA). Microsoft Office, Visio, AutoCAD et d’autres programmes incluent VBA. VBA, pris en
charge par InDesign, n’est pas intégré au programme.
Pour utiliser VBScript ou VisualBasic dans le script InDesign sous Windows, vous devez installer InDesign
depuis le compte d’un utilisateur bénéficiant des droits d’administrateur. Une fois l’installation terminée,
n’importe quel utilisateur peut exécuter des scripts InDesign. Les utilisateurs bénéficiant des droits
d’administrateur et d’utilisateur avec pouvoirs peuvent ajouter des scripts à la palette Scripts d’InDesign.
Comment utiliser les scripts de ce guide ?
Pour utiliser les scripts de ce guide :
1. Copiez le script de ce document Adobe® PDF® et collez-le dans votre éditeur de scripts (par exemple,
Bloc-notes sous Windows ou TextEdit sous Mac OS).
Important : reportez-vous à la section suivante, « Copie d’exemples avec des lignes longues ».
Adobe InDesign CS2 Guide des scripts
Introduction
3
2. Enregistrez le script dans un fichier de texte brut dans le dossier Scripts du dossier Paramètres
prédéfinis dans votre dossier InDesign (créez le dossier Scripts s’il n’existe pas), avec l’extension
appropriée :

.as pour AppleScript

.jsx pour JavaScript

.vbs pour VBScript
Remarque : vous pouvez également stocker le fichier de script dans un autre emplacement et
placer un alias (Mac OS) ou raccourci (Windows) pour ce fichier dans le dossier Scripts.
3. Pour afficher la palette Scripts, choisissez Fenêtre > Automatisation > Scripts.
4. Pour exécuter le script, cliquez deux fois sur son nom dans la palette Scripts.
Copie d’exemples avec des lignes longues
Lorsque vous copiez et collez de longues lignes de code dans votre éditeur de scripts, des sauts de
ligne indésirables générés par la mise en page du guide et le « copier-coller » peuvent être ajoutés au
code. Dans certains cas, ces sauts de ligne peuvent provoquer l’échec d’un script. Pour corriger le script,
supprimez les sauts de ligne inutiles.
Astuce : en général, lorsque vous compilez le script dans AppleScript ou Visual Basic, votre éditeur de
scripts vous indique les lignes à corriger.
Exemple AppleScript
Lorsque vous collez la ligne ci-dessous dans un éditeur de texte, supprimez le saut de ligne qui vient juste
après « properties ». Si vous ne le faites pas, le script génère une erreur.
set myBaseNameField to make text editbox with properties
{edit contents:myDocumentName, min width:160}
Exemple JavaScript
Lorsque vous collez la ligne ci-dessous dans un éditeur de texte, supprimez les sauts de ligne qui
viennent juste après les virgules. La ligne doit se terminer par un point-virgule (« ; »). Dans cet exemple,
cela fonctionne correctement avec ou sans sauts de ligne ; cependant, l’interprète ExtendScript peut
interpréter un saut de ligne comme la fin d’une instruction dans certains cas.
guides.add(myDocument.layers.item(“GuideLayer”),
{orientation:HorizontalOrVertical.horizontal, location:marginPreferences.top,
fitToPage:false});
Exemple VBScript
Lorsque vous collez la ligne ci-dessous dans un éditeur de texte, supprimez les sauts de ligne qui
précèdent le signe égal (=). Si vous ne le faites pas, le script génère une erreur.
myInDesign.ActiveDocument.MasterSpreads.Item(“B-Master”).Pages.Item(1).AppliedMaster
= myInDesign.ActiveDocument.MasterSpreads.Item(“A-Master”)
Exécution de fichiers JavaScript
Affectez l’extension .jsx aux fichiers JavaScript d’InDesign. Vous pouvez exécuter ces fichiers à partir des
outils ExtendScript ou de la palette Scripts, garantissant ainsi une interprétation correcte par ExtendScript.
Vous pouvez également cliquer deux fois sur ces fichiers à partir de votre système d’exploitation.
L’utilitaire Outils ExtendScript démarre, et le script est exécuté.
4
Introduction
Adobe InDesign CS2 Guide des scripts
Informations complémentaires
Le Guide de référence pour les scripts Adobe InDesign CS2 contient des informations détaillées sur les objets,
les propriétés et les méthodes disponibles pour les scripts dans InDesign.
Nous ne pouvons pas vous fournir ici une documentation détaillée sur AppleScript, VBScript ou JavaScript.
Vous aurez donc sûrement besoin de vous informer davantage sur un ou plusieurs de ces langages de
script.
Ressources de script d’InDesign en ligne
Pour plus d’informations sur la programmation de scripts pour InDesign, visitez les sites :



http://partners.adobe.com/public/developer/scripting/index.html
http://www.adobeforums.com (forum des utilisateurs pour les scripts InDesign). Dans le forum, les
créateurs de scripts peuvent poser des questions, envoyer des réponses et partager leurs dernières
compositions. Le forum contient plusieurs centaines d’exemples de scripts.
http://www.adobe.fr/products/indesign/scripting.html.
Adobe InDesign CS2 Guide des scripts
2
Introduction aux scripts 5
Introduction aux scripts
Si vous avez déjà utilisé InDesign, vous avez certainement l’habitude de travailler avec les blocs et leur
contenu, et d’appliquer des couleurs, une mise en forme et des styles. Vous avez défini des publications,
des pages, des planches et leur conception graphique. Si vous avez déjà manipulé tous ces éléments, vous
devez maintenant considérer une composition InDesign comme une collection d’objets.
La création de scripts dans InDesign reprend ce principe. Au cœur de la création de scripts InDesign se
trouve le modèle d’objet. Il s’agit d’une description de tous les types d’éléments (documents, planches,
pages, blocs et leur contenu) pouvant apparaître dans une composition InDesign. Chaque type d’objet
possède son propre ensemble de propriétés, et chaque objet d’une composition InDesign possède sa
propre identité.
Comme les utilisateurs d’InDesign ne sont pas tous familiarisés avec les différents termes, concepts et
techniques de programmation, ce chapitre présente les concepts de base qui vous aideront à écrire
vos scripts. Dans le cadre de ce chapitre, nous allons étudier les concepts de base de programmation
de scripts sous Windows et Macintosh. Pour plus de détails sur l’utilisation d’un système de scripts
particulier avec InDesign, consultez le chapitre 3, « Initiation aux scripts InDesign ». Les créateurs de scripts
expérimentés peuvent passer directement à ce chapitre.
Introduction aux scripts
Le script n’est pas réservé aux spécialistes en informatique ; il est accessible à tous les utilisateurs
d’InDesign. Nul besoin d’être diplômé en informatique ou en mathématiques pour écrire des scripts
pouvant automatiser un grand nombre de tâches de mise en page courantes dans InDesign. Si vous
comprenez ce que vous êtes en train de lire, alors vous êtes parfaitement capable d’écrire des scripts pour
InDesign.
Qu’est-ce que le script ?
Un script est une série de commandes indiquant à InDesign d’exécuter une série d’actions. Il peut s’agir
d’actions simples n’affectant qu’un seul objet sélectionné dans la composition en cours ou bien d’actions
complexes affectant la totalité des objets de toutes les compositions InDesign sur votre disque dur. Les
actions peuvent impliquer uniquement InDesign ou d’autres applications telles que des traitements de
texte, des feuilles de calcul et des programmes de gestion de bases de données. La plupart des tâches que
vous pouvez exécuter en manipulant les outils, les menus, les palettes et les boîtes de dialogue InDesign
peuvent être exécutées par un script.
Le script sert notamment à automatiser les tâches répétitives, mais il peut aussi servir d’outil de création.
Outre l’exécution de tâches de production courantes comme la préparation d’une série de compositions
6
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
pour une impression à distance, le script peut aussi exécuter des tâches créatives qui vous prendraient
trop de temps ou seraient trop complexes. Par exemple, vous pouvez écrire un script permettant
de modifier de façon aléatoire la police et la couleur des caractères d’une sélection ou d’augmenter
progressivement la taille et le décalage vertical des caractères d’un bout à l’autre d’une étendue de texte.
Sans recourir au script, vous ne pourriez pas utiliser ces effets créatifs.
Pour écrire un script sur Macintosh, vous devez le plus souvent utiliser AppleScript, un système d’écriture
de script qui envoie des messages aux applications ou au système d’exploitation à l’aide d’AppleEvents.
Sous Windows, les programmes VBScript utilisent un système similaire pour la communication entre
applications, communément appelé Windows Automation. En revanche, les JavaScripts fonctionnent
sur les deux plates-formes. La terminologie diffère d’un langage de script à l’autre, mais l’idée reste la
même : envoyer des informations d’un programme (le système de script) vers un autre (InDesign) afin que
l’application réceptrice exécute une tâche.
Les applications ne peuvent pas toutes être contrôlées par des scripts. Pour que le script soit efficace, une
application doit recevoir des messages d’une autre application et doit pouvoir les transformer en actions.
En outre, les messages envoyés à une application doivent être construits de telle sorte que l’application
comprenne ce que vous lui demandez de faire.
Ce manuel est une sorte de « cours de langue » ; nous vous y apprendrons à parler la langue d’InDesign.
Pourquoi développer des scripts ?
Les arts graphiques sont un domaine d’activité caractérisé par la créativité, mais, en réalité, la plupart
du travail de mise en page est tout sauf créatif. En examinant de plus près votre travail, vous verrez
certainement que vous passez le plus clair de votre temps à répéter des tâches de production identiques
ou similaires. En fait, vous vous rendrez sûrement compte que le temps que vous passez à insérer ou
remplacer des images, à corriger des erreurs de texte et à préparer des fichiers destinés à l’impression
numérique restreint souvent le temps disponible pour votre travail de création.
Ne serait-il pas intéressant de disposer d’un assistant qui effectuerait certaines voire toutes les tâches
ennuyeuses et répétitives à votre place ? Vous pourriez ainsi vous concentrer davantage sur l’aspect créatif
de votre travail.
En y consacrant un peu de temps, le script d’InDesign peut devenir votre assistant de mise en page. Vous
pouvez commencer avec des scripts courts et simples, vous faisant gagner quelques secondes par jour,
puis passer au script qui travaille la nuit, pendant que vous dormez.
Pensez à votre travail. N’y a t-il pas une tâche que vous trouvez tout particulièrement pénible ? Si c’est le
cas, c’est l’occasion rêvée de vous lancer dans le script. Pensez à cette tâche de manière analytique. Quels
sont les étapes qui entrent en jeu ? Quelles sont les conditions dans lesquelles vous devez exécuter cette
tâche ? Une fois que vous avez clairement identifié le processus, vous êtes capable de l’écrire en script.
Qu’en est-il des macros ?
Une macro est l’enregistrement d’une série d’actions de l’interface utilisateur (choix de menus, pressions
de touches et déplacements de la souris). Lorsque vous « lancez » une macro, celle-ci exécute toutes les
actions enregistrées. La création de macros nécessite des programmes utilitaires spéciaux. QuicKeys, de
CE Software, est un exemple de programme permettant de créer des macros.
De nombreuses personnes confondent les macros et les scripts. Les macros comme les scripts sont deux
moyens d’automatiser les tâches répétitives, mais leur fonctionnement diffère. Les points ci-dessous
résument les principales différences.

Les macros utilisent l’interface utilisateur d’un programme pour exécuter le travail. Lorsqu’une macro
est lancée, elle affiche et ferme les boîtes de dialogue, ouvre et choisit des menus et saisit du texte
dans des documents ou dans des champs. Les scripts, en revanche, n’utilisent pas l’interface utilisateur
d’un programme pour exécuter leurs tâches et travaillent bien plus vite que les macros les plus rapides.
Introduction aux scripts 7
Adobe InDesign CS2 Guide des scripts

Les macros offrent des possibilités limitées lorsqu’il s’agit d’obtenir des informations d’un programme
et d’y répondre. Les scripts sont capables d’obtenir des informations, ainsi que de prendre des
décisions et d’exécuter des calculs en fonction des informations reçues.
Remarque : Dans Microsoft Word, Excel, comme dans d’autres applications Microsoft Office, les macros
sont des enregistrements de séries d’actions de l’utilisateur rédigés comme des scripts et
dans lesquels il est possible d’ajouter des éléments de script. Ces macros sont différentes de
celles décrites plus haut, et InDesign ne permet pas l'enregistrement de séries d’actions de
l’utilisateur en tant que scripts.
Lecture des fichiers de scripts
L'insertion de commentaires à l’intérieur d'un script ainsi que la mise en forme de celui-ci en facilitent la
compréhension et la maintenance.
Insertion de commentaires
Les commentaires permettent d’ajouter un descriptif aux instructions d’un script. Les commentaires
sont ignorés pendant l’exécution d’un script (ils ne génèrent donc aucune erreur). Ils permettent de
documenter les opérations d’un script (pour mémoire ou pour un autre développeur).
Pour inclure un commentaire dans un AppleScript, saisissez-le, puis insérez « -- » à sa gauche ou encadrezle de « (*« et »*) ». En VBScript, saisissez « Rem » (pour « remarque ») ou « ' » (un seul guillemet de citation)
à gauche du commentaire. Saisissez le marqueur de commentaire au début d’une ligne pour transformer
toute cette ligne en commentaire. En JavaScript, saisissez « // » à gauche du commentaire ou placez ce
commentaire entre « /* » et « */ ». Par exemple :
AppleScript
--this is a comment
(* and so is this *)
VBScript
Rem this is a comment
' and so is this
JavaScript
// this is a comment
/* and so is this */
Lignes longues en AppleScript et VBScript
En AppleScript et en VBScript, un retour chariot à la fin d’une ligne signale la fin d’une instruction.
Cependant, les lignes d’un script peuvent être très longues. Comment rendre le script plus lisible sans
couper les lignes trop longues ?
En AppleScript et en VBScript, il est possible de définir des caractères spéciaux dits « de continuité ». Il s’agit
de caractères coupant les lignes, mais indiquant au script que chaque ligne coupée continue l’instruction
de la ligne précédente. En AppleScript, appuyez sur les touches Option + Retour (¬ s’affiche) pour entrer
un caractère de continuité. En VBScript, saisissez un trait de soulignement (_) suivi d’un retour chariot à la
fin de la ligne pour indiquer la continuité de cette ligne.
Dans les deux langages, le caractère de continuité ne peut pas apparaître dans une chaîne de texte.
8
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
Lignes longues en JavaScript
En JavaScript, un point-virgule (;) signale la fin d’une instruction. Les instructions pouvant contenir des
retours chariots, il n’est pas nécessaire d’insérer un caractère de continuité. En revanche, pour l’interprète
ExtendScript d’InDesign, il n’est pas nécessaire de signaler la fin d’une ligne d’instruction par un pointvirgule. ExtendScript interprète chaque ligne comme une instruction, dès que cela est possible. Par
exemple :
return
true;
n’est pas interprété comme :
return true;
Il est toutefois recommandé de terminer chaque ligne par un point-virgule et d’insérer un retour chariot
uniquement pour signaler la fin d’une instruction.
Objets et classes
La terminologie de la programmation orientée objet peut être difficile à assimiler au premier abord.
Cette section définit des termes courants et présente des exemples.
Objets
Les objets appartiennent à des classes et possèdent des propriétés à manipuler avec des méthodes
(Windows) ou des commandes (Macintosh). Que signifient ces termes dans ce contexte ?
Vous pouvez vous représenter les objets et leurs propriétés de la façon suivante : Vous habitez dans une
maison technologiquement avancée (voire magique) répondant à toutes vos commandes. La maison est
un objet. Les propriétés de cet objet Maison peuvent comprendre le nombre de pièces, la couleur de la
façade et sa date de construction, par exemple.
Supposons que vous puissiez modifier certaines propriétés de la maison (avec le bon type de commande).
Si vous lui ordonnez de se peindre en bleu, la maison (qui connaît la méthode « peinture ») va changer de
couleur.
Supposons que la maison contienne un certain nombre de petits objets. Chaque pièce pourrait par
exemple être un objet de la maison et chaque fenêtre, porte ou appareil ménager des objets de la pièce.
Vous pouvez vous adresser à ces objets directement ou par l’intermédiaire de la maison. Notez qu’il vous
faudra être très spécifique : vous ne pouvez demander à la maison d’ouvrir une fenêtre sans lui indiquer
laquelle. Vous pouvez également donner des ordres aux objets de chaque pièce (« Ordonne à la cuisine
d’ouvrir la fenêtre nord », par exemple).
Chaque objet de cette maison peut répondre à différentes méthodes en fonction de ses possibilités. Il est
possible, par exemple, d’ouvrir ou de fermer les fenêtres et les portes, mais pas le sol et le plafond.
Certaines propriétés d’objet peuvent être modifiées, d’autres non. Il est possible de changer la position
d’un meuble, mais pas la date de construction de la maison, par exemple. Les propriétés modifiables sont
dites en lecture/écriture, et les propriétés non modifiables sont dites en lecture seule.
Pour appliquer cette métaphore à InDesign : la maison représente l’application, ses pièces représentent
les pages et les planches, et ses portes et fenêtres représentent les blocs. Vous pouvez ordonner aux
pages InDesign d’ajouter des blocs et aux blocs de changer de propriété ou de contenu. Puis, vous pouvez
ordonner aux blocs de changer de couleur, d’importer une image ou de se remplir de texte.
Les objets de votre composition sont classés selon une hiérarchie : les blocs sont hébergés par des pages,
les pages par le document, et le document par InDesign. Les termes modèle d’objet ou hiérarchie font
référence à cette structure.
Introduction aux scripts 9
Adobe InDesign CS2 Guide des scripts
Référencement d’objets
Lorsque vous envoyez une commande à un objet InDesign, vous devez envoyer le message au bon objet.
Il faut donc que son adresse soit correcte. Pour ce faire, vous devez identifier chaque objet par sa position
dans la hiérarchie. Lorsque vous identifiez un objet de cette façon, vous créez une référence à cet objet. Les
différents langages utilisent des méthodes différentes de référencement d’objet, mais le principe reste le
même : donner au script un chemin d’accès à l’objet avec lequel vous souhaitez travailler.
Les exemples ci-dessous indiquent comment faire référence au premier bloc de texte de la première
double page du document actif (notez que ces scripts sont incomplets).
AppleScript
first text frame of the first spread of the first document
Remarque : lorsque votre AppleScript fait référence à un objet texte, InDesign renvoie le texte contenu
dans l’objet et non pas une référence à l’objet lui-même. Pour obtenir une référence à l’objet
texte, utilisez la propriété de référencement d’objet comme dans l’exemple ci-dessous.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell spread 1 of myDocument
set myTextFrame to make text frame
set contents of myTextFrame to "InDesign"
--The following line returns the text "InDesign"
get paragraph 1 of myTextFrame
--The following line returns a text object
get object reference of paragraph 1 of myTextFrame
end tell
end tell
VBScript
Documents.Item(1).Spreads.Item(1).TextFrames.Item(1)
JavaScript
app.documents.item(0).spreads.item(0).textFrames.item(0)
Valeurs et variables
Les scripts peuvent s’avérer très utiles lorsque vous pouvez préciser des données exactes (valeurs) et
utiliser des variables (conteneurs de données).
Valeurs
Le corps d’un caractère, la position horizontale d’un bloc de texte sur une page ou la couleur de contour
d’un rectangle sont autant d’exemples de valeurs utilisées pour la création de scripts InDesign. Les valeurs
sont des données utilisées par un script pendant son exécution.
Le type d’une valeur définit quelle sorte de donnée elle contient. Le type de valeur du contenu d’un mot,
par exemple, est une chaîne de texte. De même, le type de valeur de l’interligne d’un paragraphe est
un nombre. En général, les valeurs utilisées dans un script sont des nombres ou du texte. Le tableau cidessous répertorie les types de valeurs les plus couramment utilisées pour la création de scripts InDesign.
Type de valeur
Nature
Exemple
Booléen
Logique : True ou False
True
10
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
Type de valeur
Nature
Exemple
Entier
Nombres entiers (sans virgule).
Les entiers peuvent être positifs ou
négatifs. En VBScript, vous pouvez
utiliser des données de type long pour
les entiers. En AppleScript, vous pouvez
utiliser indifféremment des données
de type long ou fixe pour les nombres
entiers et les nombres réels.
14
Double (VBScript),
fixe ou réel
(AppleScript), virgule
flottante (JavaScript)
Nombre très précis pouvant être
décimal.
13,9972
Chaîne
Série de caractères de texte. Les
chaînes de texte sont présentées entre
guillemets anglais.
"I am a string"
Tableau de données
(VBScript,
JavaScript)
ou liste (AppleScript)
Liste de valeurs (ces valeurs peuvent
être de tout type).
AppleScript : {"0p0", "0p0",
"16p4", "20p6"}
VBScript : Array("0p0", "0p0",
"16p4", "20p6")
JavaScript : ["0p0", "0p0",
"16p4", "20p6"]
Variables
Les variables sont des conteneurs de données. Une variable peut contenir un nombre, une chaîne de texte
ou une référence à un objet InDesign. Les variables possèdent des noms. Vous ferez donc référence à une
variable par son nom. Pour placer une donnée dans une variable, vous devez l’assigner à cette variable.
Le nom de fichier de la composition InDesign active, la date et l’heure en cours et le nombre de pages de
cette même composition sont autant d’exemples de données pouvant être assignées à une variable.
Pourquoi ne pas tout simplement entrer les données telles quelles (par exemple le nom de la
composition, la date et l’heure en cours et le nombre de pages de la composition) au lieu d’utiliser des
variables ? Si vous procédez ainsi, votre script ne fonctionnera que pour une seule composition ou dans
une seule situation. En utilisant des variables, vous pouvez écrire des scripts qui fonctionneront dans
différentes situations. Pendant l’exécution d’un script, celui-ci peut assigner des données à des variables,
notamment celles représentant la composition ou la sélection active (par exemple) et prendre ensuite des
décisions en fonction du contenu de ces variables.
L’affectation de valeurs ou de chaînes de texte à des variables est très simple, comme le montrent les
exemples ci-dessous.
AppleScript
set myNumber to 10
set myString to "Hello, World!"
VBScript
myNumber = 10
myString = "Hello, World!"
JavaScript
var myNumber = 10;
var myString = "Hello, World!";
En AppleScript, il est possible d’assigner une référence d’objet à une variable pendant la création de l’objet :
set myTextFrame to make text frame with properties(geometric bounds: (0,0,3.5, 4))
ou d’assigner à cette variable une référence à un objet existant :
tell application "Adobe InDesign CS2"
set myTextFrame to first text frame of the first spread of the first document
end tell
Adobe InDesign CS2 Guide des scripts
Introduction aux scripts 11
VBScript fonctionne de la même façon. Par exemple, pour assigner une variable pendant la création d’un
bloc (le terme myInDesign à la ligne suivante faisant référence à l’objet application InDesign) :
Set myTextFrame = myInDesign.Documents.Item(1).Spreads.Item(1).TextFrames.Add
ou pour faire référence à un bloc existant :
Set myTextFrame = InDesign.Documents.Item(1).Spreads.Item(1).TextFrames.Item(1)
La même opération en JavaScript ressemble plutôt à l’opération VBScript qu’à l’opération AppleScript (en
JavaScript InDesign, app fait référence à l’application InDesign). Pour faire référence à un bloc existant :
appvar myTextFrame = app.documents[0].spreads[0].textFrames[0];
//ou
var myTextFrame = app.documents.item(0).spreads.item(0).textFrames.item(0);
ou pour assigner une variable pendant la création d’un bloc :
var myTextFrame = app.documents[0].spreads[0].textFrames.add();
//ou
var myTextFrame = app.documents.item(0).spreads.item(0).textFrames.add();
Remarque : en JavaScript, toute variable non précédée de var est considérée par défaut comme
globale, non liée à une fonction spécifique. var n’est pas obligatoire, mais il est vivement
recommandé de l’utiliser dans les scripts comprenant plusieurs fonctions. En AppleScript et
VBScript, les variables sont locales sauf si elles sont définies comme globales. Autrement dit,
elles ne sont plus valides en dehors de la fonction dans laquelle elles ont été créées.
En général, quel que soit le langage, il est préférable d’utiliser des variables locales et d’attribuer des
valeurs spécifiques aux fonctions/sous-routines/gestionnaires plutôt que de définir et d’utiliser des
variables globales. En JavaScript, pour définir une variable comme variable locale, utilisez var comme
indiqué dans l’exemple précédent. Pour indiquer qu’une fonction JavaScript comprend plusieurs variables
locales, répertoriez ces variables en début de fonction, comme dans l’exemple ci-dessous.
function myFunction(){
var myNumber, myString;
}
Noms de variables
Dans la mesure du possible, utilisez des noms évocateurs pour les variables, tels que premièrePage ou
logoSociété au lieu de x ou c, par exemple. Votre script sera beaucoup plus lisible. L’utilisation de noms
longs n’affecte en rien la vitesse d’exécution du script.
Les noms de variables doivent être composés d’un seul mot, mais vous pouvez utiliser les majuscules
(pour écrire maPremièrePage, par exemple) ou les traits de soulignement (ma _ première _ page) afin
de les rendre plus lisibles. Les noms de variables ne peuvent pas commencer par un chiffre, ni contenir des
signes de ponctuation ou des guillemets de citation.
Vous pouvez attribuer un préfixe aux noms de vos variables, afin de les distinguer des objets, commandes
et mots-clés de votre système de script. Toutes les variables utilisées dans ce manuel, par exemple,
commencent par my.
Affectation de valeurs à des variables
En AppleScript, vous devez utiliser set pour assigner tout type de valeur à une variable.
set myDocument to active document
set myString to "X"
Pour les versions de VBScript ou Visual Basic différentes de VB.NET, vous devez utiliser Set pour assigner
des références d’objets à toutes les variables sauf les types de chaîne de texte, tableau de données (array)
et nombre.
Set myDocument = myInDesign.Documents.Add
myString = "X"
12
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
En VB.NET, vous n’avez pas besoin d’utiliser Set pour les variables d’objet.
myDocument = myInDesign.Documents.Add
myString = "X"
Comme avec VB.NET, vous n’êtes pas obligé d’utiliser Set en JavaScript lors de l’affectation d’une valeur à
une variable, quel que soit le type de cette variable :
var myDocument = app.documents.add();
var myString = "X";
Variables de tableau de données
AppleScript, VBScript et JavaScript prennent en charge les tableaux de données (arrays). Un tableau de
données est un type de variable répertoriant des valeurs. En AppleScript, un tableau de données est
appelé liste.
AppleScript
set myArray to {1, 2, 3, 4}
VBScript
myArray = Array(1, 2, 3, 4)
Rem In Visual Basic.NET: myArray = New Double (1, 2, 3, 4)
JavaScript
myArray = [1, 2, 3, 4];
Pour faire référence à un élément d’un tableau de données, vous devez utiliser son numéro dans le
tableau. En VBScript et en JavaScript, le premier élément d’un tableau de données est le numéro 0 ;
en AppleScript, il s’agit du numéro 1.
AppleScript
set myFirstArrayItem to item 1 of myArray
VBScript
myFirstArrayItem = myArray(0)
JavaScript
myFirstArrayItem = myArray[0];
Remarque : vous pouvez utiliser l’instruction Option Base de Visual Basic pour attribuer le numéro 1
au premier élément d’un tableau de données. Dans les exemples de ce manuel et du
CD-ROM InDesign, nous supposons que le premier élément d’un tableau est le numéro 0 et
non pas le numéro 1. Il s’agit de l’option par défaut. Si vous avez choisi 1 pour Option Base,
vous devrez ajuster toutes les références des tableaux de données en conséquence dans les
scripts d’exemple.
Un tableau de données peut en contenir un autre, comme dans les exemples ci-dessous.
AppleScript
set myArray to {{0, 0}, {72, 72}}
VBScript
myArray = Array(Array(0,0), Array(72, 72))
Rem In Visual Basic.NET: myArray = New Array(New Double(0,0),
NewDouble (0,0))
JavaScript
myArray = [[0,0], [72,72]];
Conversion de valeurs d’un type à un autre
Tous les langages de script pris en charge par InDesign permettent de convertir des valeurs variables d’un
type à un autre. Parmi les conversions les plus communes, on peut citer la conversion de nombres en
chaînes de texte (ce qui permet d’entrer des nombres comme texte ou de les afficher dans des boîtes de
dialogue) ou de chaînes de texte en nombres (ce qui permet d’utiliser du texte pour définir un corps ou
d'autres valeurs numériques).
AppleScript
--To convert from a number to a string:
set myNumber to 2
set myString to (myNumber as string)
Adobe InDesign CS2 Guide des scripts
Introduction aux scripts 13
--To convert from a string to a number:
set myString to "2"
set myNumber to (myString as integer)
--if your string contains a decimal value, use "as real" rather than "as integer"
VBScript
Rem To convert from a number to a string:
myNumber = 2
myString = cstr(myNumber)
Rem To convert from a string to an integer:
myString = "2"
myNumber = cInt(myString)
Rem If your string contains a decimal value, use "cDbl" rather than "cInt":
myNumber = cDbl(myString)
JavaScript
//To convert from a number to a string:
myNumber = 2;
myString = myNumber + "";
//To convert from a string to an integer:
myString = "2";
myNumber = parseInt(myString);
//If your string contains a decimal value, use "parseFloat" rather than "parseInt":
myNumber = parseFloat(myString);
//You can also convert strings to numbers using the following:
myNumber = +myString;
Localisation du type de valeur d’une variable
Parfois, un script devra prendre des décisions en fonction du type de valeur d’un objet. Si vous travaillez
sur un script opérant sur une sélection de texte, par exemple, vous devrez peut-être faire en sorte que ce
script s’arrête si le type de sélection est un élément de page. Tous les langages de script permettent de
déterminer le type d’une variable.
AppleScript
-- Given a variable of unknown type, "myMysteryVariable"...
set myType to class of myMysteryVariable
--myType will be an AppleScript type (e.g., rectangle)
VBScript
Rem Given a variable of unknown type, "myMysteryVariable"...
myType = TypeName(myMysteryVariable)
Rem myType will be a string corresponding to the variable type (e.g., "Rectangle")
JavaScript
//Given a variable of unknown type, "myMysteryVariable"...
var myType =typeof (myMysteryVariable);
//If the variable is an object, "typeof" will return "object".
//To get the specific type of the object, add the following:
if (myType == "object"){
myType = myMysteryVariable.constructor.name;
}
//myType will be a string corresponding to the JavaScript type (e.g., "Rectangle")
Lorsque vous effectuez une itération via une collection, en JavaScript, le type de l’élément doit
correspondre au type de la collection. Lorsque vous effectuez une itération via une collection pageItems,
par exemple, le type de chaque élément doit être PageItem, plutôt que Rectangle, Oval, Polygon,
GraphicLine ou TextFrame. Pour obtenir le type spécifique d’un élément lorsque vous effectuez une
itération via une collection d’éléments différents, utilisez la méthode getElements(), comme dans
l’exemple suivant :
14
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
for(myCounter = 0; myCounter < app.activeDocument.pages.item(0).pageItems.length; myCounter ++){
var myPageItem = app.activeDocument.pages.item(0).pageItems.item(myCounter);
var myPageItemType = myPageItem.getElements()[0].constructor.name;
alert(myPageItemType);
}
Opérateurs
Les opérateurs utilisent des variables ou des valeurs pour exécuter des calculs (addition, soustraction,
multiplication et division) et renvoyer une valeur. Par exemple :
MyWidth/2
renvoie une valeur égale à la moitié du contenu de la variable myWidth.
Vous pouvez également utiliser des opérateurs pour exécuter des comparaisons (est égal à (=), est
différent de (<>), est supérieur à (>) ou est inférieur à (<)). Par exemple :
MyWidth > myHeight
renvoie la valeur « true » (ou 1) si myWidth est supérieur à myHeight, ou « false » (0) si ce n’est pas le cas.
Tous les langages de script fournissent des opérateurs « utilitaires » supplémentaires. En AppleScript et
VBScript, l’opérateur « & » peut joindre deux chaînes de texte.
"Pride " & "and Prejudice"
renvoie la chaîne de texte :
"Pride and Prejudice"
Pour joindre deux chaînes de texte en JavaScript, utilisez le signe plus (+).
"Pride " + "and Prejudice"
//returns the string: "Pride and Prejudice"
Méthodes
Les méthodes (parfois appelées commandes ou événements) sont les verbes du langage de script. Ce
sont des éléments du script qui génèrent des actions plus complexes que celles pouvant être réalisées
par l’affectation de valeurs de propriété. Le type de chaque objet détermine le nombre et le type de
méthodes que vous pouvez utiliser pour manipuler l’objet.
En AppleScript, la commande make permet de créer de nouveaux objets et set d’assigner des valeurs aux
propriétés ou de créer des variables d’objet. En VBScript, la méthode Add permet de créer de nouveaux
objets, l’instruction Set permet d’assigner des objets InDesign à des variables VBScript et le signe égal (=)
d’assigner des valeurs de propriétés (en Visual Basic.NET, vous pouvez omettre Set). En JavaScript, la
méthode add() permet de créer de nouveaux objets et le signe égal (=) d’assigner des objets à une
variable.
Si vous utilisez plusieurs langages de script, il est facile de tout mélanger d’un langage à l’autre. Avec
AppleScript, souvenez-vous que le signe égal est uniquement utilisé pour les instructions logiques (If) et
que set est utilisé pour toute affectation de variable. Avec VBScript ou Visual Basic (versions différentes
de VB.NET), Set est utilisé uniquement lors de la création d’une variable d’objet. En JavaScript, le signe
égal est utilisé pour assigner des valeurs à une variable. Pour comparer des objets, utilisez un signe égal
double (==).
Des paramètres sont parfois requis. Par exemple, lorsque vous créez un groupe, InDesign doit savoir quels
objets inclure dans le nouveau groupe. D’autres paramètres sont facultatifs. Par exemple, lorsque vous
créez un nouveau document, vous pouvez spécifier qu’InDesign crée le nouveau document à partir d’un
paramètre prédéfini, mais ce n’est pas obligatoire.
Adobe InDesign CS2 Guide des scripts
Introduction aux scripts 15
AppleScript
En AppleScript, vous pouvez également utiliser « with properties » pour spécifier des propriétés d’objet
lors de la création de l’objet.
tell application "Adobe InDesign CS2"
--Example of an optional parameter (requires that you have a document preset
--named "7x9_book_cover").
set myDocument to make document with document preset "7x9_book_cover"
tell page 1 of myDocument
--Example of using "with properties" to specify object properties as you create the object.
set myOval to make oval with properties {geometric bounds:{"6p", "6p", "18p", "18p"}}
--Another "with properties" example.
set myRectangle to make rectangle with properties {stroke weight:4}
--Example of a required parameter:
set myGroup to make group with properties {group items:{myOval, myRectangle}}
end tell
end tell
VBScript
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Example of an optional parameter (requires that you have
Rem a document preset named "7x9_book_cover").
Set myDocument = myInDesign.Documents.Add(myInDesign.DocumentPresets.Item("7x9_book_cover"))
Set myOval = myDocument.Pages.Item(1).Ovals.Add
myOval.GeometricBounds = Array("6p", "6p", "18p", "18p")
Set myRectangle = myDocument.Pages.Item(1).Rectangles.Add
myRectangle.StrokeWeight = 4
Rem Example of a required parameter.
Set myGroup = myDocument.Pages.Item(1).Groups.Add(Array(myOval, myRectangle))
JavaScript
//Example of an optional parameter (requires that you have
//a document preset named "7x9_book_cover").
var myDocument = app.documents.add(app.documentPresets.item("7x9_book_cover"))
//Example of setting object properties as you create the object.
var myOval = myDocument.pages.item(0).ovals.add( {geometricBounds:["6p", "6p", "18p", "18p"]});
var myRectangle = myDocument.pages.item(0).rectangles.add( {strokeWeight:4});
//Example of a required parameter.
var myGroup = myDocument.pages.item(0).groups.add([myOval, myRectangle]);
Structures de contrôle
La plupart des scripts ne suivent pas un chemin de manière séquentielle, du début à la fin, mais ils
empruntent des voies différentes en fonction de décisions, ou ils répètent des commandes plusieurs fois.
Structures de contrôle sont les commandes qui permettent d'effectuer de telles actions.
Instructions conditionnelles
Si vous pouviez parler à InDesign, vous lui diriez par exemple : « Si l’objet sélectionné est un rectangle,
définis pour cet objet un contour d’une épaisseur de 12 points ». Cette instruction est appelée instruction c
onditionnelle. Les instructions conditionnelles permettent au script d’évaluer des conditions (telles que la
couleur de l’objet sélectionné, le nombre de pages de la composition ou la date) et d’agir en fonction du
résultat. Une instruction conditionnelle commence presque toujours par if.
Les scripts d’exemple suivants vérifient le nombre de compositions ouvertes. Si aucune composition n’est
ouverte, chaque script affiche un message dans une boîte de dialogue.
16
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
AppleScript
tell application "Adobe InDesign CS2"
if (count documents) = 0 then
display dialog "No InDesign documents are open!"
end if
end tell
VBScript
Set myInDesign = CreateObject ("InDesign.Application.CS2")
If myInDesign.Documents.Count = 0
MsgBox "No InDesign documents are open!"
End If
End Sub
JavaScript
if(app.documents.length==0){
alert("No InDesign documents are open!");
}
Remarque : JavaScript utilise un signe égal double (==) pour la comparaison des valeurs (comme dans
l’exemple précédent) et un signe égal simple (=) pour l’affectation des valeurs. VBScript et
AppleScript utilisent un signe égal simple pour les comparaisons.
Boucles
Si vous pouviez parler à InDesign, vous lui diriez par exemple : « Répète vingt fois la procédure suivante. ».
En termes de script, cette instruction est appelée structure de contrôle. Les structures de contrôle gèrent les
processus répétitifs ou boucles. Une boucle répète une action continuellement, avec ou sans changement
entre instances (ou itérations) de la boucle, jusqu’à ce qu’une condition spécifique soit remplie.
Les langages de script offrent une grande variété de structures de contrôle. La forme de boucle la plus
simple est une boucle répétant une série d’opérations un certain nombre de fois. Voici un type plus
complexe de structure de contrôle. Les répétitions continuent jusqu’à ce qu’une condition soit vraie ou
fausse.
Remarque : vous pouvez interrompre l’exécution d’un script en appuyant sur Commande + point (.) sur
Mac OS ou sur Echap sous Windows.
AppleScript
Boucle simple :
repeat with counter from 1 to 20
--do something
end repeat
Boucle conditionnelle :
set myStop to false
repeat while myStop = false
--do something, at some point setting myStop to true to leave the loop.
end repeat
Adobe InDesign CS2 Guide des scripts
Introduction aux scripts 17
VBScript
Boucle simple :
For counter = 1 to 20
Rem do something
Next
Boucle conditionnelle :
Do While myStop = false
Rem do something, at some point setting myStop to true to leave the loop.
loop
JavaScript
Boucle simple :
for(var myCounter = 0; myCounter < 20; myCounter++){
//do something
}
Boucle conditionnelle :
while (myStop == false){
//do something, at some point setting myStop to true to leave the loop.
}
Sous-routines et gestionnaires
Les sous-routines et fonctions (en VBScript ou JavaScript) ou les gestionnaires (en AppleScript) sont des
modules auxquels vous pouvez faire référence dans un script. (En VBScript, la seule véritable différence
entre les sous-routines et les fonctions est qu’une fonction renvoie une valeur, contrairement à une sousroutine.) Généralement, vous allez envoyer une valeur ou une série de valeurs à une sous-routine (ou un
gestionnaire) et obtenir une ou plusieurs autres valeurs. Il n’y a rien de particulier à mentionner sur le code
des sous-routines et des gestionnaires (ces modules ont été créés pour vous éviter de taper les mêmes
lignes de code de façon répétée dans un script). Si vous devez saisir ou coller la même ligne de code en
différents endroits de votre script, vous tenez un bon candidat pour une sous-routine ou un gestionnaire.
AppleScript
--Calculate the geometric center of a selected page item
--Assumes you have a single page item selected.
tell application "Adobe InDesign CS2"
set mySelection to item 1 of selection
--Use "my" (or "of me") to specify a handler outside of the current "tell" context.
set myCenterPoint to my myCalculateCenterPoint(mySelection)
display dialog "x center: " & item 1 of myCenterPoint & return & "y center: " & item 2 of
myCenterPoint
end tell
--The following lines define the handler.
on myCalculateCenterPoint(myObject)
set myGeometricBounds to geometric bounds of myObject
set myX1 to item 2 of myGeometricBounds
set myY1 to item 1 of myGeometricBounds
set myX2 to item 4 of myGeometricBounds
set myY2 to item 3 of myGeometricBounds
set myXCenter to myX1 + ((myX2 - myX1) / 2)
set myYCenter to myY1 + ((myY2 - myY1) / 2)
return {myXCenter, myYCenter}
end myCalculateCenterPoint
18
Introduction aux scripts
Adobe InDesign CS2 Guide des scripts
VBScript
Rem Calculate the geometric center of a selected page item
Rem Assumes you have a single page item selected.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set mySelection = myInDesign.Selection.Item(1)
myCenterPoint = myCalculateCenterPoint(mySelection)
MsgBox "x center: " & myCenterPoint(0) & vbCr & "y center: " & myCenterPoint(1)
Function myCalculateCenterPoint(myObject)
myBounds = myObject.GeometricBounds
myX1 = myBounds(1)
myY1 = myBounds(0)
myX2 = myBounds(3)
myY2 = myBounds(2)
myXCenter = myX1 + ((myX2 - myX1) / 2)
myYCenter = myY1 + ((myY2 - myY1) / 2)
myCalculateCenterPoint = Array(myXCenter, myYCenter)
End Function
JavaScript
with(app){
var mySelection = selection[0];
var myCenterPoint = myCalculateCenterPoint(mySelection);
var myString = "x center: " + myCenterPoint[0] + "\n" + "y center: " + myCenterPoint[1];
alert(myString);
}
function myCalculateCenterPoint(myObject){
var myGeometricBounds = myObject.geometricBounds;
var myX1 = myGeometricBounds[1];
var myY1 = myGeometricBounds[0];
var myX2 = myGeometricBounds[3];
var myY2 = myGeometricBounds[2];
var myXCenter = myX1 + ((myX2 - myX1)/2);
var myYCenter = myY1 + ((myY2 - myY1)/2);
return [myXCenter, myYCenter];
}
Adobe InDesign CS2 Guide des scripts
3
Initiation aux scripts InDesign 19
Initiation aux scripts InDesign
Ce chapitre rassemble des informations générales indispensables pour créer des scripts pour InDesign.
Il donne aussi des exemples simples d’opérations de création de script InDesign. Même si vous connaissez
déjà AppleScript, VBScript ou JavaScript, nous vous conseillons de lire ce chapitre, car il couvre un certain
nombre de sujets spécifiques à InDesign.
Mesures et positionnement
Dans InDesign, tous les éléments et objets sont placés sur une page en fonction des mesures que vous
spécifiez. Il est très utile de connaître le fonctionnement du système de coordonnées d’InDesign et les
unités de mesure qu’il utilise.
Coordonnées
Comme tout autre programme de mise en page et de dessin, InDesign utilise une géométrie
bidimensionnelle pour enregistrer la position d’objets sur une page ou une planche. La composante
horizontale d’une paire de coordonnées (ou point) est appelée x et sa composante verticale y. Vous
pouvez voir ces coordonnées dans la palette Transformation lorsqu’un objet est sélectionné avec l’outil
Sélection. Comme dans l’interface utilisateur d’InDesign, les coordonnées sont mesurées par rapport à
une origine (point zéro) qui peut se trouver dans l’angle supérieur gauche d’une page ou d’une planche,
ou au niveau de la reliure d’une planche.
Il existe une différence entre les coordonnées utilisées dans InDesign et le système de coordonnées
géométrique traditionnel. Sur l’axe vertical (ou y) d’InDesign, les coordonnées en dessous de zéro sont des
nombres positifs et celles situées au-dessus, des nombres négatifs.
En général, InDesign renvoie des coordonnées dans l’ordre x, y et elles doivent également lui être
envoyées dans cet ordre.
Remarque : InDesign renvoie certaines coordonnées dans un ordre différent, et celles-ci doivent lui être
envoyées dans le même ordre. Les délimitations géométriques et les délimitations visibles
sont des tableaux de données contenant quatre coordonnées. Ces coordonnées définissent
dans l’ordre les bords supérieur, gauche, inférieur et droit du cadre de sélection de l’objet
(soit y1, x1, y2, x2).
Pour indiquer à InDesign de placer la sélection active à une position située deux picas à droite et six picas
au-dessous du point zéro, par exemple, vous pouvez utiliser les scripts ci-dessous.
20
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
AppleScript
tell application "Adobe InDesign CS2"
set mySelection to item 1 of selection
move mySelection to {"2p", "6p"}
end tell
VBScript
Set myInDesign = CreateObject("InDesign.Application.CS2")
myInDesign.Selection.Item(1).Move Array("2p","6p")
JavaScript
with(app){
mySelection = selection[0];
mySelection.move(["2p", "6p"]);
}
Unités de mesure
Pour envoyer des valeurs de mesure à InDesign, vous pouvez utiliser soit des nombres (14.65, par
exemple) soit des chaînes de mesure (« 1p7.1 », par exemple). Si vous envoyez des nombres, InDesign
utilise les unités de mesure actives de la composition ; si vous envoyez des chaînes de mesure, InDesign
utilise les unités de mesure spécifiées dans chaque chaîne.
InDesign renvoie les coordonnées et autres valeurs de mesure en utilisant les unités de mesure actives de
la composition. Dans certains cas, les résultats ne sont pas présentés de la même façon que dans la palette
Transformation d’InDesign. Si le système de mesure actif est en picas, par exemple, InDesign renvoie
des valeurs fractionnaires sous forme de nombres décimaux, au lieu d’utiliser les conventions « picas et
points » de la palette Transformation. « 1p6 », par exemple, est renvoyé comme « 1.5 ». InDesign procède
de cette façon parce que le système de scripts ne peut pas exécuter d’opération arithmétique avec des
chaînes de mesure ; si vous additionnez « 0p3.5 » et « 13p4 » par exemple, vous allez obtenir une erreur
de script ; en revanche, si vous additionnez 0.2916 et 13.333 (les mêmes mesures après leur conversion) le
résultat sera correct.
Si votre script dépend de l’addition, la soustraction, la multiplication ou la division de valeurs de mesure
spécifiques, il est préférable de convertir les unités de mesure correspondantes au début du script. A la
fin du script, vous pourrez convertir à nouveau les unités de mesure afin de leur rendre leur aspect initial.
Vous pouvez également utiliser des remplacements d’unités de mesures, comme dans beaucoup de nos
scripts d’exemple. Un remplacement d’unité de mesure est une chaîne contenant un caractère spécial,
comme dans les exemples ci-dessous.
Caractère
p
Signification
picas (le p peut être suivi de points supplémentaires)
Exemple
1p6
pt
points
18pt
mm
millimeters
6,35mm
cm
centimeters
0,635cm
c
cicéros (le c peut être suivi de didots supplémentaires) 1,4c
i (ou in)
inches
0,25i
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 21
Modèle d’objet de document InDesign
Cette section présente des types d’objet clés et leur hiérarchie dans InDesign :


Application : Préférences (de toute sorte)
Application : Par défaut (Colors, ParagraphStyles, etc. ; les objets par défaut de l’application
s’appliquent à tous les nouveaux documents)

Application : Documents (collection de documents ouverts)

Document : Préférences (de toute sorte)

Document : Par défaut (Colors, ParagraphStyles, etc. ; objets par défaut du document)

Document : Planches/Pages

Planche/Page : PageItems (Rectangles, Ovals, Polygons, GraphicLines, TextFrames, etc.)

Document : Articles (texte du document)

Article : Objets texte (Paragraphs, Words, Characters, Lines, etc. ; texte de l’article)


Un bouton est un élément de page (il permet notamment d’ajouter un bouton interactif à un
document PDF exporté).
Application : Boîtes de dialogue (boîtes de dialogue du script) (comprennent la plupart des gadgets
d’interface utilisateur (radio button controls, dropdowns, checkbox controls, etc.) permettant de créer
des boîtes de dialogues modales).
Présentation du modèle d’objet InDesign
Les objets et commandes disponibles dans InDesign sont tous documentés dans le Guide de référence pour
les scripts Adobe InDesign CS2, mais vous pouvez également les percevoir du point de vue de votre système
de scripts si vous utilisez AppleScript ou VBScript. JavaScript ne permet pas de visualiser les modèles
d’objet InDesign.
AppleScript
Pour afficher le dictionnaire AppleScript d’InDesign :
1. Lancez InDesign et l’éditeur de scripts Apple. Si l’éditeur de scripts est introuvable, reportez-vous à la
section « Conditions préalables » du chapitre Introduction.
2. Dans l’éditeur de scripts, choisissez Fichier > Ouvrir un dictionnaire. L’éditeur de scripts affiche la boîte
de dialogue standard d’ouverture de fichiers.
3. Sélectionnez l’application InDesign, puis cliquez sur OK. L’éditeur de scripts affiche une liste des objets
et commandes InDesign. Vous pouvez également voir une liste des propriétés associées à chaque
objet.
JavaScript et VBScript
Si vous utilisez JavaScript pour écrire vos scripts InDesign, vous ne pouvez pas voir le modèle d’objet
InDesign comme avec AppleScript ou VBScript. Vous devez vous reporter au chapitre correspondant du
Guide de référence pour les scripts Adobe InDesign.
22
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
Visual Basic
Pour afficher la bibliothèque d’objets InDesign en Visual Basic (les étapes suivantes sont présentées pour
Visual Basic 6 ; les boîtes de dialogue pour les utilisateurs de Visual Basic 5 CCE et Visual Basic.NET sont
légèrement différentes) :
1. Dans un projet Visual Basic, choisissez Projet > Références. Visual Basic affiche la boîte de dialogue
Références.
2. Sélectionnez l’option Adobe InDesign CS2 Type Library dans la liste de références disponibles, puis
cliquez sur OK. Si la bibliothèque n’apparaît pas dans la liste de références disponibles, cliquez sur
Parcourir, puis sélectionnez le fichier Resources for Visual Basic.tlb (que vous trouverez généralement
dans ~:\Documents and Settings\nom_utilisateur\Application Data\Adobe\InCopy\Version 4.0\
Scripting Support\4.0 -- nom_utilisateur étant votre nom d’utilisateur). Après avoir localisé le fichier,
cliquez sur Ouvrir pour ajouter la référence à votre projet.
3. Sélectionnez Affichage > Explorateur d’objets. Visual Basic affiche la boîte de dialogue Explorateur
d’objets.
4. Choisissez « InDesign » dans la liste de bibliothèques ouvertes du menu Projet/Bibliothèque. Visual
Basic affiche les objets composant le modèle d’objet InDesign.
5. Cliquez sur une classe d’objet. Visual Basic affiche les propriétés et méthodes de l’objet. Pour obtenir
des informations sur une propriété ou une méthode, sélectionnez-la. Visual Basic affiche sa définition
au bas de la fenêtre Explorateur d’objets.
Votre premier script InDesign
Le premier projet classique abordé lors de l’apprentissage d’un nouveau langage de programmation
consiste à afficher, ou à imprimer, le message « Hello World ». Pour cet exemple, nous allons créer une
nouvelle composition InDesign et ajouter un bloc contenant ce message. La page de document créée
ressemble à l’illustration ci-dessous.
AppleScript
Pour créer un AppleScript :
1. Ouvrez l’éditeur de scripts Apple.
2. Entrez le script ci-dessous. Les lignes précédées par deux tirets (--) sont des commentaires qui seront
ignorés par le script. Nous avons inclus ces commentaires pour décrire les opérations du programme.
Lorsque vous examinerez le script, vous remarquerez comment nous avons créé puis manipulé chaque
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 23
objet successivement. La commande AppleScript tell définit l’objet qui recevra le message que nous
allons lui envoyer.
--Hello World
tell application "Adobe InDesign CS2"
--Create a new document and assign its
--identity to the variable "myDocument"
set myDocument to make document
tell myDocument
--Create a new text frame on the first page.
tell page 1
set myTextFrame to make text frame
--Change the size of the text frame.
set geometric bounds of myTextFrame to {"0p0", "0p0", "18p0", "18p0"}
--Enter text in the text frame.
set contents of myTextFrame to "Hello World!"
end tell
end tell
end tell
3. Enregistrez le script.
4. Activez le script (cliquez sur Exécuter dans l’éditeur de scripts). InDesign crée une nouvelle
composition, ajoute un bloc de texte et saisit du texte. Pendant ce processus, l’éditeur de scripts peut
vous demander de localiser l’application InDesign. Dans ce cas, sélectionnez l’application dans la liste
d’applications ; l’éditeur de scripts gardera cet emplacement en mémoire pour la prochaine exécution
du script.
VBScript
Pour créer un VBasic :
1. Lancez une application de traitement de texte (Bloc-notes, par exemple).
2. Entrez le script ci-dessous. Les lignes précédées par Rem sont des commentaires qui sont ignorés par
le script. Nous avons inclus ces commentaires pour décrire les opérations du programme. Lorsque
vous examinerez le script, vous remarquerez comment nous avons créé puis manipulé chaque objet
successivement. Il est inutile d’entrer les commentaires.
Rem Hello World
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Créer un document.
Set myDocument = myInDesign.Documents.Add
Rem Get a reference to the first page.
Set myPage = myDocument.Pages.Item(1)
Rem Create a text frame.
Set myTextFrame = myDocument.TextFrames.Add
Rem Specify the size and shape of the text frame.
myTextFrame.GeometricBounds = Array("0p0", "0p0", "18p0", "18p0")
Rem Enter text in the text frame.
myTextFrame.Contents = "Hello World!"
3. Enregistrez le fichier en texte seul dans le dossier Scripts du dossier Paramètres prédéfinis, dans votre
dossier InDesign. Affectez-lui l’extension de fichier .vbs.
4. Affichez la palette Scripts (si nécessaire). Pour exécuter le script, cliquez deux fois sur son nom dans la
palette.
Visual Basic
Pour créer un script Visual Basic (les étapes suivantes sont présentées pour Visual Basic 6 ; les boîtes de
dialogue pour les utilisateurs de Visual Basic 5 CCE et Visual Basic.NET sont légèrement différentes) :
1. Activez Visual Basic, puis créez un nouveau projet. Ajoutez la référence InDesign CS Type Library au
projet, comme expliqué précédemment.
24
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
2. Pour créer un nouveau bouton sur le formulaire par défaut, utilisez l’outil CommandButton. Cliquez
deux fois sur le bouton pour ouvrir la fenêtre de code.
3. Entrez le code ci-dessous (entre les lignes Private Sub et End Sub définissant le code du bouton).
Les lignes précédées par Rem sont des commentaires qui sont ignorés par le script. Nous avons inclus
ces commentaires pour décrire les opérations du programme. Lorsque vous examinerez le script, vous
remarquerez comment nous avons créé puis manipulé chaque objet successivement. Il est inutile
d’entrer les commentaires.
Rem Hello World
Rem Declare variable types (optional if Option Explicit is off).
Dim myInDesign As InDesign.Application
Dim myDocument As InDesign.Document
Dim myPage As InDesign.Page
Dim myTextFrame As InDesign.TextFrame
Rem End of variable type declarations.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Créer un document.
Set myDocument = myInDesign.Documents.Add
Rem Get a reference to the first page.
Set myPage = myDocument.Pages.Item(1)
Rem Create a text frame.
Set myTextFrame = myDocument.TextFrames.Add
Rem Specify the size and shape of the text frame.
myTextFrame.GeometricBounds = Array("0p0", "0p0", "18p0", "18p0")
Rem Enter text in the text frame.
myTextFrame.Contents = "Hello World!"
4. Enregistrez le formulaire.
5. Lancez InDesign.
6. Revenez à Visual Basic, puis exécutez le programme.
7. Cliquez sur le bouton que vous avez créé précédemment. InDesign crée une nouvelle composition,
crée un bloc de texte et saisit du texte.
JavaScript
Pour créer un script JavaScript :
1. Utilisez n’importe quelle application de traitement de texte (InDesign ou Outils ExtendScript) pour
saisir le texte ci-dessous.
//Hello World!
var myDocument = app.documents.add();
with(myDocument){
var myPage = myDocument.pages.item(0);
with(myPage){
//Create a new text frame and assign it to the variable "myTextFrame"
var myTextFrame = textFrames.add();
//Specify the size and shape of the text frame.
myTextFrame.geometricBounds = [ "0p0", "0p0", "18p0", "18p0"];
//Enter text in the text frame.
myTextFrame.contents = "Hello World!"
}
}
2. Enregistrez le texte dans un fichier de texte brut avec l’extension .jsx dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 25
Ajout de caractéristiques à « Hello World »
Nous allons maintenant créer un nouveau script qui modifiera la composition « Hello World » créée avec
notre premier script. Pour notre second script, nous allons vous apprendre comment :

Obtenir le document actif.

Utiliser une fonction (ou un gestionnaire dans AppleScript).

Obtenir les dimensions et les marges des pages de la composition active.

Redimensionner un bloc de texte.

Changer la mise en forme du texte dans son bloc.
Après mise en forme, la page de document ressemble à l’illustration ci-dessous :
AppleScript
Pour créer le script :
1. Vérifiez que le document « Hello World » est bien ouvert. Si vous avez fermé le document sans
l’enregistrer, il vous suffit d’exécuter à nouveau le script précédent pour créer un nouveau document
« Hello World ».
2. Choisissez Fichier > Nouveau dans l’éditeur de scripts pour créer un nouveau script.
3. Entrez le script ci-dessous.
--Improved "Hello World"
tell application "Adobe InDesign CS2"
--Get a reference to a font.
try
--Enter the name of a font on your system, if necessary.
set myFont to font "Helvetica"
end try
--Get the active document and assign the result to the variable "myDocument."
set myDocument to active document
tell myDocument
--Use the handler "myGetBounds" to get the bounds of the
--"live area" inside the margins of page 1.
set myBounds to my myGetBounds(myDocument, page 1)
tell text frame 1 of page 1
--Resize the text frame to match the page margins.
set geometric bounds to myBounds
tell paragraph 1
--Change the font, size, and paragraph alignment.
try
set applied font to myFont
end try
set point size to 72
set justification to center align
end tell
end tell
end tell
26
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
end tell
--myGetBounds is a handler that returns the bounds of the "live area" of a page.
on myGetBounds(myDocument, myPage)
tell application "Adobe InDesign CS2"
set myPageHeight to page height of document preferences of myDocument
set myPageWidth to page width of document preferences of myDocument
set myLeft to left of margin preferences of myPage
set myTop to top of margin preferences of myPage
set myRight to right of margin preferences of myPage
set myBottom to bottom of margin preferences of myPage
end tell
set myRight to myLeft + (myPageWidth - (myRight + myLeft))
set myBottom to myTop + (myPageHeight - (myBottom + myTop))
return {myTop, myLeft, myBottom, myRight}
end myGetBounds
4. Enregistrez le script.
5. Exécutez le nouveau script.
VBScript
Pour créer le script :
1. Lancez une application de traitement de texte (Bloc-notes, par exemple).
2. Vérifiez que le document « Hello World » est bien ouvert. Si vous avez fermé le document sans
l’enregistrer, il vous suffit d’exécuter à nouveau le script précédent pour créer un nouveau document
« Hello World ».
3. Entrez le script ci-dessous.
Rem Improved "Hello World"
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Enter the name of a font on your system, if necessary.
Set myFont = myInDesign.Fonts.Item("Arial")
Set myDocument = myInDesign.ActiveDocument
Set myPage = myDocument.Pages.Item(1)
Rem Get page width and page height using the function "myGetBounds".
myBounds = myGetBounds(myDocument, myPage)
Set myTextFrame = myPage.TextFrames.Item(1)
Rem Resize the text frame to match the publication margins.
myTextFrame.GeometricBounds = myBounds
Set myParagraph = myTextFrame.Paragraphs.Item(1)
Rem Change the font, size, and alignment.
If TypeName(myFont) <> "Nothing" Then
myParagraph.AppliedFont = myFont
End If
myParagraph.PointSize = 48
myParagraph.Justification = idJustification.idLeftAlign
Function myGetBounds(myDocument, myPage)
myPageHeight = myDocument.DocumentPreferences.PageHeight
myPageWidth = myDocument.DocumentPreferences.PageWidth
myTop = myPage.MarginPreferences.Top
myLeft = myPage.MarginPreferences.Left
myRight = myPage.MarginPreferences.Right
myBottom = myPage.MarginPreferences.Bottom
myRight = myPageWidth - myRight
myBottom = myPageHeight - myBottom
myGetBounds = Array(myTop, myLeft, myBottom, myRight)
End Function
4. Enregistrez le texte dans un fichier de texte brut avec l’extension .vbs dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
5. Pour exécuter le nouveau script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 27
Visual Basic
Pour créer le script :
1. Ouvrez le projet créé pour le script « Hello World » si ce n’est pas déjà fait.
2. Vérifiez que le document « Hello World » est bien ouvert. Si vous avez fermé le document sans
l’enregistrer, il vous suffit d’exécuter à nouveau le script précédent pour créer un nouveau document
« Hello World ».
3. Ajoutez un nouveau bouton au formulaire.
4. Cliquez deux fois sur le bouton pour ouvrir la fenêtre de code, puis entrez le script ci-dessous.
Rem Improved "Hello World"
Rem Declare variable types (optional if Option Explicit is off)
Dim myInDesign As InDesign.Application
Dim myDocument As InDesign.Document
Dim myPage As InDesign.Page
Dim myStory As InDesign.Story
Dim myTextFrame As InDesign.TextFrame
Rem End of variable type declarations.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Enter the name of a font on your system, if necessary.
Set myFont = myInDesign.Fonts.Item("Arial")
Set myDocument = myInDesign.ActiveDocument
Set myPage = myDocument.Pages.Item(1)
Rem Get page width and page height using the function "myGetBounds".
myBounds = myGetBounds(myDocument, myPage)
Set myTextFrame = myPage.TextFrames.Item(1)
Rem Resize the text frame to match the publication margins.
myTextFrame.GeometricBounds = myBounds
Set myParagraph = myTextFrame.Paragraphs.Item(1)
Rem Change the font, size, and alignment.
If TypeName(myFont) <> "Nothing" Then
myParagraph.AppliedFont = myFont
End If
myParagraph.PointSize = 48
myParagraph.Justification = idJustification.idLeftAlign
5. Après la ligne End Sub, entrez le texte ci-dessous pour créer une fonction.
Private Function myGetBounds(myDocument, myPage)
Rem Declare variable types (optional if Option Explicit is turned off)
Rem Omit if you are using VBSCript.
Dim myPageHeight, myPageWidth, myTop, myLeft, myRight, myBottom As Double
Rem End of variable declaractions.
myPageHeight = myDocument.DocumentPreferences.PageHeight
myPageWidth = myDocument.DocumentPreferences.PageWidth
myTop = myPage.MarginPreferences.Top
myLeft = myPage.MarginPreferences.Left
myRight = myPage.MarginPreferences.Right
myBottom = myPage.MarginPreferences.Bottom
myRight = myPageWidth - myRight
myBottom = myPageHeight - myBottom
myGetBounds = Array(myTop, myLeft, myBottom, myRight)
Rem If you are using VB.NET, replace the line above with the following:
Rem myGetBounds = New Double(myTop, myLeft, myBottom, myRight)
End Function
6. Enregistrez le formulaire.
7. Pour exécuter le nouveau script, cliquez sur le bouton créé à l’étape 3.
28
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
JavaScript
Pour créer le script :
1. Vérifiez que le document « Hello World » est bien ouvert. Si vous avez fermé le document sans
l’enregistrer, il vous suffit d’exécuter à nouveau le script précédent pour créer un nouveau document
« Hello World ».
2. Entrez le JavaScript ci-dessous dans un nouveau fichier texte.
//Improved Hello World!
//Enter the name of a font on your system, if necessary.
myFont = app.fonts.item("Arial");
var myDocument = app.activeDocument
with(myDocument){
var myPage = pages.item(0);
var myBounds = myGetBounds(myPage,myDocument);
with(myDocument.pages.item(0)){
//Get a reference to the text frame.
var myTextFrame = textFrames.item(0);
//Change the size of the text frame.
myTextFrame.geometricBounds = myBounds;
var myParagraph = myTextFrame.paragraphs.item(0);
myParagraph.appliedFont = myFont;
myParagraph.justification = Justification.leftAlign;
myParagraph.pointZSize = 48;
}
}
//myGetBounds calculates and return the bounds of the "live area" of the page.
function myGetBounds(myPage, myDocument){
var array = new Array()
var item = 0;
with (myDocument.documentPreferences){
var myPageHeight = pageHeight;
var myPageWidth = pageWidth;
}
with(myPage.marginPreferences){
var myX1 = left;
var myY1 = top;
var myY2 = bottom;
var myX2 = right;
}
array[item++] = myY1;
array[item++] = myX1;
array[item++] = myPageHeight - myY2;
array[item++] = myPageWidth - myX2;
return array;
}
3. Enregistrez le texte dans un fichier de texte brut avec l’extension .jsx dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
4. Pour exécuter le nouveau script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
Initiation aux scripts InDesign 29
Adobe InDesign CS2 Guide des scripts
Ajout d’une interface utilisateur à « Hello World »
Pour que votre script puisse collecter et agir sur les informations entrées par vos soins ou par tout autre
utilisateur, vous pouvez lui ajouter une interface utilisateur. En AppleScript, VBScript et JavaScript, il est
possible de créer des boîtes de dialogue pour les questions oui/non et les entrées de texte, mais vous
aurez parfois besoin de créer des boîtes de dialogue plus complexes. En Visual Basic, il est possible de
créer des interfaces utilisateur complètes, mais elles seront exécutées à partir d’un fichier Visual Basic
exécutable distinct. Avec les scripts InDesign, vous aurez la possibilité de créer des boîtes de dialogue
complexes à afficher dans InDesign et ressemblant à l’interface utilisateur standard du programme.
Présentation des boîtes de dialogue
Une boîte de dialogue InDesign est un objet de script InDesign comme un autre. Une boîte de dialogue
peut contenir plusieurs sortes d’éléments.
Eléments d’une boîte de
dialogue
Champs d’entrée de texte
Nom InDesign
Champs d’entrée de nombre
Real editbox, integer editbox, measurement
editbox, percent editbox, angle editbox
Menus déroulants
Dropdown controls
Commandes composées d’un
champ d’entrée de texte et
d’un menu déroulant
Combobox controls
Cases à cocher
Checkbox controls
Cases d’option
Radiobutton controls
Text editbox controls
L’objet boîte de dialogue n’héberge pas directement les commandes (c’est le rôle de l’objet colonne
de boîte de dialogue). Les colonnes de boîte de dialogue permettent de contrôler la position des
commandes dans une boîte de dialogue. Il est possible de diviser une colonne de boîte de dialogue en
plusieurs autres colonnes ou volets de bordure (qui peuvent eux-mêmes être divisés en autres colonnes
de boîte de dialogue et volets de bordure).
Border panel
Dialog column
Dialog column
Dialog column
Dialog column
Static text
Radiobutton group
Radiobutton control
Integer editbox
Checkbox
control
Dropdown
30
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
Comme tout autre objet de script InDesign, les différentes parties d’une boîte de dialogue possèdent
leurs propres propriétés. Une commande checkbox, par exemple, possède une propriété pour son texte
(« static label ») et une autre pour son état (« checked state »). La commande dropdown possède une
propriété permettant de paramétrer la liste d’options apparaissant dans son menu (« string list »).
Pour utiliser une boîte de dialogue dans un script, vous devez créer l’objet boîte de dialogue, le remplir
de commandes, afficher la boîte de dialogue et rassembler les valeurs de ses commandes afin de les
rendre disponibles pour le script. Les boîtes de dialogue restent dans la mémoire InDesign jusqu’à leur
destruction. De cette façon, vous pouvez conserver une boîte de dialogue en mémoire et faire en sorte
que les données stockées dans ses propriétés soient utilisées par plusieurs scripts. Notez que ces boîtes
de dialogue occupent de l’espace en mémoire et doivent être supprimées lorsqu’elles sont inutilisées. En
règle générale, il est préférable de détruire l’objet boîte de dialogue avant la fin de l’exécution du script.
Ajout de l’interface utilisateur
Pour cet exemple, nous allons ajouter une interface utilisateur simple à notre script « Hello World ». Les
options de la boîte de dialogue permettront de spécifier le texte d’exemple (et changer ainsi la phrase
« Hello World », qui doit commencer à vous lasser) et de modifier le corps du texte. Nous avons également
utilisé un gestionnaire (AppleScript) ou une fonction (VBScript, JavaScript) pour obtenir la zone active de la
page active (« myGetBounds »).
AppleScript
1. Entrez l’AppleScript ci-dessous dans l’éditeur de scripts.
--Simple User Interface Example
tell application "Adobe InDesign CS2"
activate
set myDocument to make document
set myDialog to make dialog
tell myDialog
set name to "Simple User Interface Example Script"
set myDialogColumn to make dialog column
tell myDialogColumn
--Create a text entry field.
set myTextEditField to make text editbox with properties ¬
{edit contents:"Hello World!", min width:180}
--Create a number (real) entry field.
set myPointSizeField to make real editbox with properties {edit contents:"72"}
end tell
show
--Get the settings from the dialog box.
--Get the point size from the point size field.
set myPointSize to edit contents of myPointSizeField as real
--Get the example text from the text edit field.
set myString to edit contents of myTextEditField
--Supprimer la boîte de dialogue de la mémoire.
destroy myDialog
end tell
tell page 1 of myDocument
--Create a text frame.
set myTextFrame to make text frame
set geometric bounds of myTextFrame to my myGetBounds(myDocument, page 1 of myDocument)
--Apply the settings from the dialog box to the text frame.
set contents of myTextFrame to myString
--Set the point size of the text in the text frame.
set point size of text 1 of myTextFrame to myPointSize
end tell
end tell
on myGetBounds(myDocument, myPage)
tell application "Adobe InDesign CS2"
set myPageHeight to page height of document preferences of myDocument
set myPageWidth to page width of document preferences of myDocument
set myLeft to left of margin preferences of myPage
set myTop to top of margin preferences of myPage
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 31
set myRight to right of margin preferences of myPage
set myBottom to bottom of margin preferences of myPage
end tell
set myRight to myLeft + (myPageWidth - (myRight + myLeft))
set myBottom to myTop + (myPageHeight - (myBottom + myTop))
return {myTop, myLeft, myBottom, myRight}
end myGetBounds
2. Enregistrez le texte sous forme de script compilé dans le dossier Scripts du dossier Paramètres
prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign ou lancez-le à
partir de l’éditeur de scripts.
VBScript
1. Entrez le VBScript ci-dessous dans un traitement de texte.
Rem Simple User Interface Example
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDialog = myInDesign.Dialogs.Add
myDialog.CanCancel = True
myDialog.Name = " Simple User Interface Example Script"
Set myDialogColumn = myDialog.DialogColumns.Add
Set myTextEditField = myDialogColumn.TextEditboxes.Add
myTextEditField.EditContents = "Hello World!"
myTextEditField.MinWidth = 180
Rem Create a number (real) entry field.
Set myPointSizeField = myDialogColumn.RealEditboxes.Add
myPointSizeField.EditValue = 72
myDialog.Show
Rem Get the values from the dialog box controls.
myString = myTextEditField.EditContents
myPointSize = myPointSizeField.EditValue
Rem Supprimer la boîte de dialogue de la mémoire.
myDialog.Destroy
Rem Créer un document.
Set myDocument = myInDesign.Documents.Add
Set myTextFrame = myDocument.Pages.Item(1).TextFrames.Add
Rem Resize the text frame to the "live" area of the page (using the function "myGetBounds").
myBounds = myGetBounds(myDocument, myDocument.Pages.Item(1))
myTextFrame.GeometricBounds = myBounds
Rem Enter the text from the dialog box in the text frame.
myTextFrame.Contents = myString
Rem Set the size of the text to the size you entered in the dialog box.
myTextFrame.Texts.Item(1).PointSize = myPointSize
Rem Function for getting the bounds of the "live area"
Function myGetBounds(myDocument, myPage)
myPageHeight = myDocument.DocumentPreferences.PageHeight
myPageWidth = myDocument.DocumentPreferences.PageWidth
myTop = myPage.MarginPreferences.Top
myLeft = myPage.MarginPreferences.Left
myRight = myPage.MarginPreferences.Right
myBottom = myPage.MarginPreferences.Bottom
myRight = myPageWidth - myRight
myBottom = myPageHeight - myBottom
myGetBounds = Array(myTop, myLeft, myBottom, myRight)
End Function
2. Enregistrez le texte dans un fichier de texte brut avec l’extension .vbs dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
32
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
JavaScript
1. Entrez le JavaScript ci-dessous dans un traitement de texte ou l’utilitaire Outils ExtendScript.
//Exemple d’interface utilisateur simple
var myDialog = app.dialogs.add({name:"Simple User Interface Example Script",canCancel:true});
with(myDialog){
//Add a dialog column.
with(dialogColumns.add()){
//Create a text edit field.
var myTextEditField = textEditboxes.add({editContents:"Hello World!", minWidth:180});
//Create a number (real) entry field.
var myPointSizeField = realEditboxes.add({editValue:72});
}
}
//Display the dialog box.
var myResult = myDialog.show();
if(myResult == true){
//Get the values from the dialog box controls.
var myString = myTextEditField.editContents;
var myPointSize = myPointSizeField.editValue;
//Supprimer la boîte de dialogue de la mémoire.
myDialog.destroy();
//Créer un document.
var myDocument = app.documents.add()
with(myDocument){
//Create a text frame.
var myTextFrame = pages.item(0).textFrames.add();
//Resize the text frame to the "live" area of the page (using the function
"myGetBounds").
var myBounds = myGetBounds(myDocument, myDocument.pages.item(0));
myTextFrame.geometricBounds=myBounds;
//Enter the text from the dialog box in the text frame.
myTextFrame.contents=myString;
//Set the size of the text to the size you entered in the dialog box.
myTextFrame.texts.item(0).pointSize = myPointSize;
}
}
else{
//User clicked Cancel, so remove the dialog box from memory.
myDialog.destroy();
}
function myGetBounds(myDocument, myPage){
with(myDocument.documentPreferences){
var myPageHeight = pageHeight;
var myPageWidth = pageWidth;
}
with(myPage.marginPreferences){
var myTop = top;
var myLeft = left;
var myRight = right;
var myBottom = bottom;
}
myRight = myPageWidth - myRight;
myBottom = myPageHeight- myBottom;
return [myTop, myLeft, myBottom, myRight];
}
2. Enregistrez le texte dans un fichier de texte brut avec l’extension .jsx dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 33
Création d’une interface utilisateur plus complexe
Dans l’exemple ci-dessous, nous allons ajouter des commandes supplémentaires et de différents types
à notre boîte de dialogue. L’exemple permet de créer une boîte de dialogue ressemblant à l’illustration
ci-dessous.
AppleScript
1. Entrez l’AppleScript ci-dessous dans l’éditeur de scripts.
--Exemple d’interface utilisateur complexe
tell application "Adobe InDesign CS2"
activate
set myDocument to make document
set myDialog to make dialog
--This example dialog box uses border panels and dialog columns to
--separate and organize the user interface items in the dialog.
tell myDialog
set name to "User Interface Example Script"
set myDialogColumn to make dialog column
tell myDialogColumn
set myBorderPanel to make border panel
tell myBorderPanel
set myDialogColumn to make dialog column
tell myDialogColumn
make static text with properties {static label:"Message:"}
end tell
set myDialogColumn to make dialog column
tell myDialogColumn
set myTextEditField to make text editbox with properties ¬
{edit contents:"Hello World!", min width:180}
end tell
end tell
set myBorderPanel to make border panel
tell myBorderPanel
set myDialogColumn to make dialog column
tell myDialogColumn
make static text with properties {static label:"Point Size:"}
end tell
set myDialogColumn to make dialog column
tell myDialogColumn
set myPointSizeField to make real editbox with properties {edit contents:"72"}
end tell
end tell
set myBorderPanel to make border panel
tell myBorderPanel
set myDialogColumn to make dialog column
tell myDialogColumn
make static text with properties {static label:"Vertical Justification:"}
end tell
set myDialogColumn to make dialog column
34
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
tell myDialogColumn
set myVerticalJustificationMenu to make dropdown with properties ¬
{string list:{"Top", "Center", "Bottom"}, selected index:0}
end tell
end tell
set myBorderPanel to make border panel
tell myBorderPanel
make static text with properties {static label:"Paragraph Alignment:"}
set myParagraphAlignmentGroup to make radiobutton group
tell myParagraphAlignmentGroup
set myLeftRadioButton to make radiobutton control with properties ¬
{static label:"Left", checked state:true}
set myCenterRadioButton to make radiobutton control with properties ¬
{static label:"Center"}
set myRightRadioButton to make radiobutton control with properties ¬
{static label:"Right"}
end tell
end tell
end tell
show
--Get the settings from the dialog box.
--Get the point size from the point size field.
set myPointSize to edit contents of myPointSizeField as real
--Get the example text from the text edit field.
set myString to edit contents of myTextEditField
--Get the vertical justification setting from the pop-up menu.
if selected index of myVerticalJustificationMenu is 0 then
set myVerticalJustification to top align
else if selected index of myVerticalJustificationMenu is 1 then
set myVerticalJustification to center align
else
set myVerticalJustification to bottom align
end if
--Get the paragraph alignment setting from the radiobutton group.
get properties of myParagraphAlignmentGroup
if selected button of myParagraphAlignmentGroup is 0 then
set myParagraphAlignment to left align
else if selected button of myParagraphAlignmentGroup is 1 then
set myParagraphAlignment to center align
else
set myParagraphAlignment to right align
end if
--Supprimer la boîte de dialogue de la mémoire.
destroy myDialog
end tell
tell page 1 of myDocument
set myTextFrame to make text frame
set geometric bounds of myTextFrame to my myGetBounds(myDocument, page 1 of myDocument)
--Apply the settings from the dialog box to the text frame.
set contents of myTextFrame to myString
--Apply the vertical justification setting.
set vertical justification of text frame preferences of myTextFrame to ¬
myVerticalJustification
--Apply the paragraph alignment ("justification").
--"text 1 of myTextFrame" is all of the text in the text frame.
set justification of text 1 of myTextFrame to myParagraphAlignment
--Set the point size of the text in the text frame.
set point size of text 1 of myTextFrame to myPointSize
end tell
end tell
on myGetBounds(myDocument, myPage)
tell application "Adobe InDesign CS2"
set myPageHeight to page height of document preferences of myDocument
set myPageWidth to page width of document preferences of myDocument
set myLeft to left of margin preferences of myPage
set myTop to top of margin preferences of myPage
set myRight to right of margin preferences of myPage
set myBottom to bottom of margin preferences of myPage
end tell
set myRight to myLeft + (myPageWidth - (myRight + myLeft))
set myBottom to myTop + (myPageHeight - (myBottom + myTop))
return {myTop, myLeft, myBottom, myRight}
end myGetBounds
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 35
2. Enregistrez le texte sous forme de script compilé dans le dossier Scripts du dossier Paramètres
prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign ou lancez-le à
partir de l’éditeur de scripts.
VBScript
1. Entrez le VBScript ci-dessous dans un traitement de texte.
Rem Complex User Interface Example
Set myInDesign = CreateObject("InDesign.Application.CS2")
myInDesign.Activate
Set myDialog = myInDesign.Dialogs.Add
myDialog.CanCancel = True
myDialog.Name = "User Interface Example Script"
Rem Create a dialog column.
Set myDialogColumn = myDialog.DialogColumns.Add
Rem Create a border panel.
Set myBorderPanel = myDialogColumn.BorderPanels.Add
Rem Create a dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myStaticText = myTempDialogColumn.StaticTexts.Add
myStaticText.StaticLabel = "Message:"
Rem Create another dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myTextEditField = myTempDialogColumn.TextEditboxes.Add
myTextEditField.EditContents = "Hello World!"
myTextEditField.MinWidth = 180
Rem Create another border panel.
Set myBorderPanel = myDialogColumn.BorderPanels.Add
Rem Create a dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myStaticText = myTempDialogColumn.StaticTexts.Add
myStaticText.StaticLabel = "Point Size:"
Rem Create another dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myPointSizeField = myTempDialogColumn.RealEditboxes.Add
myPointSizeField.EditValue = 72
Rem Create another border panel.
Set myBorderPanel = myDialogColumn.BorderPanels.Add
Rem Create a dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myStaticText = myTempDialogColumn.StaticTexts.Add
myStaticText.StaticLabel = "Vertical Justification:"
Rem Create another dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myVerticalJustificationMenu = myTempDialogColumn.Dropdowns.Add
myVerticalJustificationMenu.StringList = Array("Top", "Center", "Bottom")
myVerticalJustificationMenu.SelectedIndex = 0
Rem Create another border panel.
Set myBorderPanel = myDialogColumn.BorderPanels.Add
Rem Create a dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myStaticText = myTempDialogColumn.StaticTexts.Add
myStaticText.StaticLabel = "Paragraph Alignment:"
Rem Create another dialog column inside the border panel.
Set myTempDialogColumn = myBorderPanel.DialogColumns.Add
Set myRadioButtonGroup = myTempDialogColumn.RadiobuttonGroups.Add
Set myLeftRadioButton = myRadioButtonGroup.RadiobuttonControls.Add
myLeftRadioButton.StaticLabel = "Left"
myLeftRadioButton.CheckedState = True
Set myCenterRadioButton = myRadioButtonGroup.RadiobuttonControls.Add
myCenterRadioButton.StaticLabel = "Center"
Set myRightRadioButton = myRadioButtonGroup.RadiobuttonControls.Add
myRightRadioButton.StaticLabel = "Right"
Rem If the user clicked OK, then create the example document.
If myDialog.Show = True Then
Rem Get the values from the dialog box controls.
myString = myTextEditField.EditContents
myPointSize = myPointSizeField.EditValue
36
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
Rem Créer un document.
Set myDocument = myInDesign.Documents.Add
Set myTextFrame = myDocument.Pages.Item(1).TextFrames.Add
Rem Resize the text frame to the "live" area of the page (using the function
"myGetBounds").
myBounds = myGetBounds(myDocument, myDocument.Pages.Item(1))
myTextFrame.GeometricBounds = myBounds
Rem Enter the text from the dialog box in the text frame.
myTextFrame.Contents = myString
Rem Set the size of the text to the size you entered in the dialog box.
myTextFrame.Texts.Item(1).PointSize = myPointSize
Rem Set the vertical justification of the text frame to the dialog menu choice.
Select Case myVerticalJustificationMenu.SelectedIndex
Case 0
myTextFrame.TextFramePreferences.VerticalJustification = idVerticalJustification.
idTopAlign
Case 1
myTextFrame.TextFramePreferences.VerticalJustification = ¬
idVerticalJustification.idCenterAlign
Case Else
myTextFrame.TextFramePreferences.VerticalJustification = idTopAlign.idBottomAlign
End Select
Rem set the paragraph alignment of the text to the dialog radio button choice.
Select Case myRadioButtonGroup.SelectedButton
Case 0
myTextFrame.Texts.Item(1).Justification = idJustification.idLeftAlign
Case 1
myTextFrame.Texts.Item(1).Justification = idJustification.idCenterAlign
Case Else
myTextFrame.Texts.Item(1).Justification = idJustification.idRightAlign
End Select
Rem Supprimer la boîte de dialogue de la mémoire.
myDialog.Destroy
End If
Rem Function for getting the bounds of the "live area"
Function myGetBounds(myDocument, myPage)
myPageHeight = myDocument.DocumentPreferences.PageHeight
myPageWidth = myDocument.DocumentPreferences.PageWidth
myTop = myPage.MarginPreferences.Top
myLeft = myPage.MarginPreferences.Left
myRight = myPage.MarginPreferences.Right
myBottom = myPage.MarginPreferences.Bottom
myRight = myPageWidth - myRight
myBottom = myPageHeight - myBottom
myGetBounds = Array(myTop, myLeft, myBottom, myRight)
End Function
2. Enregistrez le texte dans un fichier de texte brut avec l’extension .vbs dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
JavaScript
1. Entrez le JavaScript ci-dessous dans un traitement de texte.
//Exemple d’interface utilisateur complexe
//Create a dialog.
var myDialog = app.dialogs.add({name:"User Interface Example Script", canCancel:true});
with(myDialog){
//Add a dialog column.
with(dialogColumns.add()){
//Create a border panel.
with(borderPanels.add()){
with(dialogColumns.add()){
//The following line shows how to set a property as you create an object.
staticTexts.add({staticLabel:"Message:"});
}
with(dialogColumns.add()){
//The following line shows how to set multiple properties as you create an object.
var myTextEditField = textEditboxes.add({editContents:"Hello World!",
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 37
minWidth:180});
}
}
//Create another border panel.
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Point Size:"});
}
with(dialogColumns.add()){
//Create a number entry field. Note that this field uses editValue
//rather than editText (as a textEditBox would).
var myPointSizeField = realEditboxes.add({editValue:72});
}
}
//Create another border panel.
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Vertical Justification:"});
}
with(dialogColumns.add()){
//Create a pop-up menu ("dropdown") control.
var myVerticalJustificationMenu = dropdowns.add({stringList:["Top", "Center",
"Bottom"], selectedIndex:0});
}
}
//Create another border panel.
with(borderPanels.add()){
staticTexts.add({staticLabel:"Paragraph Alignment:"});
var myRadioButtonGroup = radiobuttonGroups.add();
with(myRadioButtonGroup){
var myLeftRadioButton = radiobuttonControls.add({staticLabel:"Left", checkedState:
true});
var myCenterRadioButton = radiobuttonControls.add({staticLabel:"Center"});
var myRightRadioButton = radiobuttonControls.add({staticLabel:"Right"});
}
}
}
}
//Display the dialog box.
if(myDialog.show() == true){
var myParagraphAlignment, myString, myPointSize, myVerticalJustification;
//If the user didn’t click the Cancel button,
//then get the values back from the dialog box.
//Get the example text from the text edit field.
myString = myTextEditField.editContents
//Get the point size from the point size field.
myPointSize = myPointSizeField.editValue;
//Get the vertical justification setting from the pop-up menu.
if(myVerticalJustificationMenu.selectedIndex == 0){
myVerticalJustification = VerticalJustification.topAlign;
}
else if(myVerticalJustificationMenu.selectedIndex == 1){
myVerticalJustification = VerticalJustification.centerAlign;
}
else{
myVerticalJustification = VerticalJustification.bottomAlign;
}
//Get the paragraph alignment setting from the radiobutton group.
if(myRadioButtonGroup.selectedButton == 0){
myParagraphAlignment = Justification.leftAlign;
}
else if(myRadioButtonGroup.selectedButton == 1){
myParagraphAlignment = Justification.centerAlign;
}
else{
myParagraphAlignment = Justification.rightAlign;
}
myDialog.destroy();
//Now create the document and apply the properties to the text.
var myDocument = app.documents.add();
with(myDocument){
38
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
var myPage = pages[0];
with(myPage){
//Create a text frame.
var myTextFrame = pages.item(0).textFrames.add();
with(myTextFrame){
//Set the geometric bounds of the frame using the "myGetBounds" function.
geometricBounds = myGetBounds(myDocument, myPage);
//Set the contents of the frame to the string you entered in the dialog box.
contents = myString;
//Set the alignment of the paragraph.
texts.item(0).justification = myParagraphAlignment;
//Set the point size of the text.
texts.item(0).pointSize = myPointSize;
//Set the vertical justification of the text frame.
textFramePreferences.verticalJustification = myVerticalJustification;
}
}
}
}
else{
myDialog.destroy()
}
//Utility function for getting the bounds of the "live area" of a page.
function myGetBounds(myDocument, myPage){
with(myDocument.documentPreferences){
var myPageHeight = pageHeight;
var myPageWidth = pageWidth;
}
with(myPage.marginPreferences){
var myTop = top;
var myLeft = left;
var myRight = right;
var myBottom = bottom;
}
myRight = myPageWidth - myRight;
myBottom = myPageHeight- myBottom;
return [myTop, myLeft, myBottom, myRight];
}
2. Enregistrez le texte dans un fichier de texte brut avec l’extension .jsx dans le dossier Scripts du
dossier Paramètres prédéfinis, dans votre dossier InDesign.
3. Pour tester le script, cliquez deux fois sur son nom dans la palette Scripts d’InDesign.
Gestion des erreurs
Supposons l’exemple suivant : vous avez écrit un script de mise en forme pour tout texte sélectionné.
Que doit faire le script si la sélection active n’est pas une sélection de texte mais celle d’un rectangle, d’un
ovale ou d’un polygone ? La gestion des erreurs permet au script de répondre aux situations inattendues.
Si vous avez le contrôle total du contexte dans lequel votre script s’exécute, la gestion des erreurs ne
vous concerne pas. Dans le cas contraire, en revanche, vous devez ajouter ces fonctions à votre script.
Les exemples ci-après montrent comment interrompre l’exécution d’un script lorsque aucun objet n’est
sélectionné dans InDesign.
AppleScript
tell application "Adobe InDesign CS2"
--First, check to see whether any InDesign documents are open.
--If no documents are open, display an error message.
if (count documents) is not equal to 0 then
set mySelection to selection
if (count mySelection) is not equal to 0 then
--Something is selected. If this were a real script, you would
--now do something with the object or objects in the selection.
display dialog "You have " & (count mySelection) & " items selected."
else
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 39
--No objects were selected, so display an error message.
display dialog "No InDesign objects are selected. Please select an object and try again."
end if
else
--No documents were open, so display an error message.
display dialog "No InDesign documents are open. Please open a document and try again."
end if
end tell
VBScript
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem First, check to see whether any InDesign documents are open.
Rem If no documents are open, display an error message.
If myInDesign.Documents.Count <> 0 Then
If myInDesign.Selection.Count > 0 Then
Rem Something is selected. If this were a real script, you would
Rem now do something with the object or objects in the selection.
MsgBox "You have " & CStr(myInDesign.Selection.Count) & " items selected."
Else
Rem Nothing is selected, so display an error message.
MsgBox "No InDesign objects are selected. Please select an object and try again."
End If
Else
Rem No documents are open, so display an error message.
MsgBox "No InDesign documents are open. Please open a file and try again."
End If
JavaScript
//First, check to see whether any InDesign documents are open.
//If no documents are open, display an error message.
if (app.documents.length > 0){
if (app.selection.length > 0) {
//Something is selected. If this were a real script, you would
//now do something with the object or objects in the selection.
alert("You have " + app.selection.length + " items selected.")
}
else {
//Nothing is selected, so display an error message.
alert("Nothing is selected. Please select an object and try again.")
}
}
else {
//No documents are open, so display an error message.
alert("No InDesign documents are open. Please open a document and try again.")
}
Vous pouvez également utiliser l’instruction JavaScript « try…catch » pour la gestion des erreurs, comme
illustré ci-dessous.
//Display the type of the first item in the selection.
try {
myObjectType = app.selection[0].constructor.name;
alert("The first selected item is a " + myObjectType + " object.");
}
catch (e){
if (app.documents.length == 0){
//No documents are open, so display an error message.
alert("No InDesign documents are open. Please open a document and try again.");
}
else {
if (app.selection.length == 0){
//Nothing is selected, so display an error message.
alert("Nothing is selected. Please select an object and try again.");
}
else{
alert("An error occurred, but I’m not sure what it was.");
}
}
}
40
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
Utilisation des palettes pour gérer des scripts
Utilisation de la palette Scripts
La palette Scripts d’InDesign représente le meilleur moyen pour exécuter la plupart des scripts InDesign.
Pour afficher la palette Scripts, choisissez Fenêtre > Automatisation > Scripts (si cette palette n’est pas déjà
affichée).
Si la palette Scripts n’est pas disponible, le module externe n’a sans doute pas été installé ou a été
désactivé. Utilisez le gestionnaire de modules externes pour activer le module correspondant ou
réinstallez la palette Scripts.
Pour exécuter un JavaScript dans InDesign, vous devez avoir installé la palette Scripts.
Voici quelques actions courantes de la palette Scripts :






Pour ajouter un script à la palette Scripts, placez-le dans le dossier Scripts du dossier Paramètres
prédéfinis, dans votre dossier InDesign. A partir de la palette Scripts, vous pouvez exécuter des
AppleScripts, JavaScripts (.jsx), VBScripts (.vbs) compilés ou non, ou des programmes exécutables.
Vous pouvez également placer dans le dossier correspondant des alias de fichiers (Mac OS) ou des
raccourcis (Windows) de fichiers ou de dossiers. Lorsque vous reviendrez à InDesign, les noms des
fichiers (ou dossiers) de scripts seront affichés dans la palette Scripts.
Pour activer un script à partir de la palette Scripts, cliquez deux fois sur son nom dans la palette. Les
scripts activés à partir de la palette Scripts sont exécutés plus rapidement que ceux activés à partir
du Finder (Mac OS) ou de l’Explorateur (Windows). Lorsqu’un script est exécuté à partir de la palette
Scripts, InDesign supprime le rafraîchissement de l’écran jusqu’à ce que ce script soit terminé. Pour
afficher les opérations du script à mesure qu’elles s’exécutent, dans le menu de la palette Scripts,
choisissez Activer la réactualisation.
Pour modifier un script affiché dans la palette Scripts, maintenez la touche Option (Mac OS) ou Alt
(Windows) enfoncée tout en cliquant deux fois sur le nom du script. Le script sera ouvert dans l’éditeur
défini pour son type de fichier.
Pour ouvrir le dossier contenant un script affiché dans la palette Scripts, maintenez la touche
Commande (Mac OS) ou Ctrl (Windows) enfoncée tout en cliquant deux fois sur le nom du script.
Vous pouvez également choisir Faire apparaître dans le Finder (Mac OS) ou Faire apparaître dans
l’Explorateur (Windows) dans le menu de la palette Scripts. Le dossier contenant le script s’ouvre dans
le Finder (Mac OS) ou l’Explorateur (Windows).
Pour ouvrir un JavaScript dans le débogueur Outils ExtendScript, maintenez la touche Maj enfoncée
et cliquez deux fois sur le nom du script dans la palette Scripts. Pour plus de détails, reportez-vous au
chapitre 4, « Utilisation des fonctions et outils ExtendScript ».
Pour ajouter un raccourci clavier à un script, choisissez Edition > Raccourcis clavier. Dans le menu
Ensemble, sélectionnez un ensemble de raccourcis modifiable, puis sélectionnez Scripts dans le menu
Zone du produit. Une liste de scripts apparaît dans la palette Scripts. Sélectionnez un script et affectezlui un raccourci clavier comme vous le feriez pour n’importe quelle autre fonction d’InDesign.
Adobe InDesign CS2 Guide des scripts
Initiation aux scripts InDesign 41
Utilisation de la palette Intitulé de script
De nombreux objets du modèle d’objet InDesign possèdent une propriété d’intitulé. Il s’agit d’une
propriété pouvant être attribuée à toute chaîne d’un maximum de 32 Ko de texte. Cette propriété permet
principalement d’identifier les objets afin que les scripts puissent agir sur eux. Pour assigner un intitulé à
un objet, vous pouvez utiliser la palette Intitulé de script (choisissez Fenêtre > Automatisation > Intitulé
de script).
Si la palette Intitulé de script n’est pas disponible, le module externe n’a sans doute pas été installé ou
a été désactivé. Utilisez le gestionnaire de modules externes pour activer le module correspondant
ou réinstallez la palette. Pour accéder au gestionnaire de modules externes, sélectionnez Aide >
Configuration des modules externes (Windows) ou InDesign > Configuration des modules externes
(Mac OS).
Les exemples ci-dessous illustrent comment obtenir une référence à un élément de page comportant un
intitulé spécifique.
AppleScript
--Given a reference to a page "myPage" containing a text frame with the label "myTargetFrame"
tell myPage
set myTextFrame to text frame "myTargetFrame"
end if
VBScript
Rem Given a reference to a page "myPage" containing a text frame with the label "myTargetFrame"
Set myTextFrame = myPage.TextFrames.Item("myTargetFrame")
JavaScript
// Assuming that the first page of the active document contains
// a text frame with the label "myTargetFrame"
with(app.documents.item(0).pages.item(0)){
myTargetFrame = textFrames.item("myTargetFrame");
}
Tests et dépannage
Les environnements de programmation fournissent des outils de contrôle de l’exécution de vos scripts, ce
qui facilite l’identification des problèmes rencontrés ou causés par ces derniers.
Débogage d’un AppleScript
L’éditeur de scripts Apple n’est pas équipé d’outils de débogage avancés. Vous pouvez toutefois utiliser la
session d’état. Pour observer votre script pendant qu’il envoie des commandes à InDesign et en reçoit des
informations :
1. Choisissez Commandes > Ouvrir la session d’état. L’éditeur de scripts affiche la fenêtre de session
d’état.
2. Activez les options d’affichage des événements et des résultats.
42
Initiation aux scripts InDesign
Adobe InDesign CS2 Guide des scripts
3. Lancez le script.
Pendant l’exécution du script, vous pouvez visualiser les commandes envoyées à InDesign ainsi que
les réponses renvoyées. De plus, la fenêtre de résultat (choisissez Commandes > Afficher le résultat)
affiche la valeur renvoyée par l’instruction de script la plus récente.
Les éditeurs AppleScript tiers comme Script Debugger (de Late Night Software : www.latenightsw.com)
présentent des fonctions de débogage beaucoup plus avancées que l’éditeur AppleScript. Si vous avez
l’intention d’écrire des scripts avancés, il est fortement recommandé d’utiliser un éditeur de scripts doté
de fonctions de débogage avancées.
Débogage d’un VBScript
Vous pouvez déboguer un VBScript à l’aide du débogueur de Visual Basic. En Visual Basic, vous pouvez
arrêter un script à tout moment et l’exécuter ligne par ligne. Vous pouvez également observer les valeurs
des variables définies dans un script en utilisant les fenêtres Espions et Variables locales, deux outils
inestimables pour le débogage de scripts.
Pour afficher une variable dans la fenêtre Espions :
1. Sélectionnez la variable, puis choisissez Débogage > Espion express. Visual Basic affiche la boîte de
dialogue Espion express.
2. Cliquez sur Ajouter. Visual Basic affiche la fenêtre Espions.
3. Pour arrêter le script sur une ligne particulière (afin d’examiner la fenêtre Espions), sélectionnez-la,
puis choisissez Débogage > Basculer le point d’arrêt. Pendant l’exécution du script, Visual Basic s’arrête
au niveau du point d’arrêt défini, ce qui vous permet d’examiner les valeurs des variables. Notez que
si vous avez masqué la fenêtre Espions, vous pouvez l’afficher à nouveau en choisissant Affichage >
Fenêtre Espions.
4. Choisissez l’une des options suivantes :


Pour exécuter la ligne de script suivante, choisissez Débogage > Pas à pas détaillé (ou appuyez
sur F8 dans Visual Basic 6 ou sur F11 dans Visual Basic.NET).
Pour poursuivre l’exécution normale du script, choisissez Exécution > Exécuter (touche F5) dans
Visual Basic 6 ou Débogage > Exécuter (touche F5) dans Visual Basic.NET.
Débogage d’un JavaScript
Le débogage d’un JavaScript est présenté dans le chapitre 4, « Utilisation des fonctions et outils
ExtendScript ».
Adobe InDesign CS2 Guide des scripts
4
Utilisation des fonctions et outils ExtendScript
43
Utilisation des fonctions et outils ExtendScript
ExtendScript est l’implémentation étendue de JavaScript d’Adobe. Elle peut être utilisée par toutes
les applications Adobe Creative Suite 2 disposant d’une interface de programmation de scripts. Outre
l’implémentation du langage JavaScript selon les spécifications du W3C, ExtendScript offre des fonctions
et utilitaires supplémentaires.


Pour le développement, le débogage et le test de scripts, ExtendScript comprend :

Outils ExtendScript : environnement de développement et de test interactif pour ExtendScript.

Un objet de débogage global, l’objet Dollar ($).

Un utilitaire de rapports pour les éléments ExtendScript, l’interface Reflection d’ExtendScript.
ExtendScript offre également les fonctions et outils suivants :






Un utilitaire de localisation fournissant des valeurs de chaîne d’interface utilisateur dans différentes
langues. Reportez-vous à la section Localisation de chaînes ExtendScript.
Des fonctions globales pour afficher des messages courts dans des boîtes de dialogue. Reportezvous à la section Fonctions d’assistance de notification utilisateur.
Un type d’objet permettant de spécifier des valeurs de mesure ainsi que leurs unités. Reportezvous à la section Spécification de valeurs de mesure.
Des outils permettant de combiner des scripts, tels que la directive #include et les instructions
import et export. Reportez-vous à la section Prise en charge de la programmation modulaire.
Une prise en charge de l’extension ou du remplacement du comportement d’opérateurs logiques
et mathématiques par classe. Reportez-vous à la section Surcharge d’opérateurs.
ExtendScript offre un environnement de programmation pour toutes les applications Adobe Creative
Suite 2 et autorise la communication entre applications via les scripts.



Pour identifier des applications Adobe Creative Suite 2 spécifiques, les scripts doivent utiliser des
indicateurs d’application et d’espace de noms.
Les applications peuvent exécuter automatiquement des scripts au lancement. Reportez-vous à la
section Emplacements des scripts et vérification de l’installation de l’application.
Pour plus de détails sur la communication entre applications, reportez-vous au Guide de référence
JavaScript Bridge, disponible avec Adobe Creative Suite 2.
Outils ExtendScript
Il s’agit de l’environnement de développement et de test interactif pour ExtendScript dans toutes les
applications Adobe Creative Suite 2. Il comprend un éditeur complet, compatible Unicode, avec mise en
surbrillance de la syntaxe et prise en charge annuler/rétablir, et vous permet :

d’exécuter pas à pas des JavaScripts dans une application CS2 ;
44
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts

d’inspecter toutes les données d’un script en cours d’exécution ;

de définir et d’exécuter des points d’arrêt.
Cet environnement est l’éditeur par défaut pour les fichiers ExtendScript avec l’extension .jsx. Vous
pouvez l’utiliser pour modifier ou déboguer des scripts dans des fichiers JS ou JSX.
Lorsque vous cliquez deux fois sur un fichier JSX dans l’environnement de fenêtrage de la plate-forme,
le script s’exécute dans l’environnement Outils ExtendScript, sauf si une application cible est spécifiée à
l’aide de la directive #target. Pour plus de détails, reportez-vous aux sections « Sélection d’une cible de
débogage » et « Directives de prétraitement ».
Configuration de la fenêtre Outils ExtendScript
L’environnement Outils ExtendScript apparaît à l’origine selon la présentation des volets par défaut,
avec une configuration d’onglets par défaut. Vous pouvez ajuster la taille des volets en faisant glisser les
séparateurs vers le haut, le bas, la droite ou la gauche. Vous pouvez également regrouper les onglets.
Pour déplacer un onglet, faites glisser son libellé d’un volet à l’autre.
Faites glisser un onglet dans un nouveau volet
Le volet de destination est en surbrillance, et
le nouvel onglet est ajouté à la pile d’onglets
Si vous faites glisser un onglet de sorte que l’ensemble du volet de destination soit en surbrillance, l’onglet
s’intègre aux autres onglets de ce volet. Si vous faites glisser un onglet dans la partie supérieure ou
inférieure d’un volet (de sorte que seule la barre supérieure ou inférieure du volet de destination soit en
surbrillance), le volet se scinde et affiche les onglets en mosaïque.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Sélectionnez l’application cible
45
Faites apparaître les menus contextuels d’onglets
Le volet scindé affiche les onglets du navigateur et de l’éditeur
Chaque onglet est pourvu d’un menu déroulant accessible depuis l’icône fléchée, dans l’angle supérieur
droit. Ce menu est également accessible sous la forme d’un menu contextuel. Pour le faire apparaître,
cliquez sur l’onglet avec le bouton droit de la souris. Une commandepermettant de masquer le voletest
toujours disponible dans ce menu. Utilisez le menu Fenêtre pour afficher un volet masqué ou pour le faire
apparaître au premier plan.
L’éditeur, qui comprend un onglet pour chaque script, comprend un menu contextuel supplémentaire
pour le débogage. Pour faire apparaître ce menu, cliquez avec le bouton droit de la souris dans la zone
des lignes numérotées.
L’environnement Outils ExtendScript enregistre la présentation en cours lorsque vous le quittez, et la
restaure lorsque vous le redémarrez. Il enregistre et restaure également les documents ouverts, leur
emplacement, ainsi que les points d’arrêt éventuels.


Si vous ne souhaitez pas que les paramètres soit restaurés au démarrage, maintenez la touche Maj
enfoncée pendant le chargement de l’environnement Outils ExtendScript. Vous restaurerez ainsi
les paramètres par défaut. Cela permet de reconnecter la dernière application et le dernier moteur
sélectionnés.
Si vous souhaitez restaurer les paramètres de présentation au démarrage, sans charger les documents
précédemment ouverts, choisissez Commencer avec un espace de travail vide dans la boîte de
dialogue Préférences.
Sélection d’une cible de débogage
L’environnement Outils ExtendScript permet de déboguer plusieurs applications en même temps.
Si plusieurs applications Adobe Creative Suite 2 sont installées, sélectionnez l’application cible dans la
liste déroulante située dans la partie supérieure gauche, sous la barre de menus. Toutes les applications
installées et utilisant ExtendScript sont répertoriées dans cette liste. Si vous sélectionnez une application
qui n’est pas en cours d’exécution, vous êtes invité à autoriser l’environnement Outils ExtendScript à
l’exécuter.
Tous les moteurs disponibles dans l’application cible sélectionnée sont répertoriés dans une liste
déroulante à droite de la liste des applications. Une icône indiquant l’état de débogage s’affiche en regard
de chaque moteur. Une application cible peut avoir plusieurs moteurs ExtendScript ; plusieurs peuvent
être actifs, bien qu’un seul soit en cours. Un moteur actif est un moteur qui exécute du code, qui est arrêté
à point d’arrêt ou qui, après avoir exécuté tous les scripts, attend de recevoir des événements. Une icône
46
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
en regard du nom de chaque moteur indique si le moteur est en cours d’exécution, arrêté ou en attente
d’entrée.
en cours d’exécution
arrêté
en attente
Le moteur en cours est celui dont les données et l’état s’affichent dans les volets de l’environnement
Outils ExtendScript. Si une application ne possède qu’un moteur, son moteur devient « en cours » lorsque
vous la choisissez comme cible. Si l’application cible possède plusieurs moteurs, sélectionnez-en un dans
la liste pour qu’il devienne « en cours ».
Lorsque vous ouvrez l’environnement Outils ExtendScript, il tente de se reconnecter à la même cible et
au même moteur que ceux définis lors de sa dernière utilisation. Si cette application cible n’est pas en
cours d’exécution, vous êtes invité à autoriser l’environnement Outils ExtendScript à l’exécuter. Si vous
n’accordez pas l’autorisation, l’environnement Outils ExtendScript devient l’application cible.
Si l’application cible que vous sélectionnez n’est pas en cours d’exécution, vous êtes invité à autoriser
l’environnement Outils ExtendScript à lancer l’application, puis l’environnement ouvre celle-ci. De même,
si vous exécutez un script spécifiant une application cible qui n’est pas en cours d’exécution (via la
directive #target), vous êtes invité à autoriser l’environnement Outils ExtendScript à lancer l’application.
Si l’application est en cours d’exécution mais qu’elle n’est pas sélectionnée comme la cible en cours, un
message de l’environnement Outils ExtendScript vous invite à basculer vers cette application.
Si vous sélectionnez une application qui ne peut pas être déboguée dans l’environnement
Outils ExtendScript (Adobe Help, par exemple), un message d’erreur vous informe que l’environnement
ne peut pas se connecter à l’application sélectionnée.
L’environnement Outils ExtendScript est l’éditeur par défaut des fichiers JSX. Lorsque vous cliquez
deux fois sur un fichier JSX dans un explorateur de fichiers, cet environnement recherche une
directive #target dans le fichier et lance l’application afin d’exécuter le script. Il recherche auparavant les
erreurs éventuelles de syntaxe présentes dans le script, puis, le cas échéant, les affiche dans une boîte de
message. L’environnement se ferme au lieu de lancer l’application cible. Par exemple :
Sélection des scripts
L’onglet Scripts affiche la liste des scripts pouvant être débogués pour l’application cible. Il peut s’agir de
fichiers JS ou JSX ou (pour certaines applications) de fichiers HTML contenant des scripts intégrés.
Sélectionnez un script dans cet onglet pour le charger et en afficher le contenu dans le volet de l’éditeur,
depuis lequel vous pouvez modifier, enregistrer ou exécuter le script dans l’application cible.
Adobe InDesign CS2 Guide des scripts
Utilisation des fonctions et outils ExtendScript
47
Suivi des données
L’onglet Explorateur de données est votre interface avec le moteur JavaScript. Il affiche toutes les données
actives définies dans le contexte en cours sous forme de liste de variables accompagnées de leurs valeurs
actuelles. Si l’exécution est interrompue au niveau d’un point d’arrêt, il affiche les variables définies à
l’aide de var dans la fonction en cours, ainsi que les arguments de la fonction. Pour afficher les variables
définies dans l’étendue globale ou d’appel, utilisez la Pile des appels pour changer de contexte (reportezvous à la section « Pile d’appels »).
Vous pouvez utiliser l’Explorateur de données pour consulter et définir des valeurs de variable.


Cliquez sur le nom d’une variable pour en consulter la valeur actuelle dans le champ d’entrée, dans la
partie supérieure de l’onglet.
Pour modifier la valeur, spécifiez une nouvelle valeur et appuyez sur la touche Entrée. Lorsqu’une
variable est en lecture seule, le champ d’entrée est désactivé.
Affichez ou modifiez la valeur de la variable sélectionnée
L'objet s'ouvre pour afficher les propriétés
Le menu déroulant de cet onglet vous permet de contrôler la quantité de données à afficher :



Afficher les fonctions globales affiche/masque les définitions de fonctions globales.
Afficher les méthodes objet affiche/masque les fonctions associées à des objets. Le plus souvent,
les données les plus intéressantes d’un objet sont les méthodes pouvant être appelées.
Afficher les éléments du langage JavaScript affiche/masque toutes les données qui appartiennent à
la norme du langage JavaScript, telles que le constructeur Array ou l’objet Math. _ _ proto _ _ est
une propriété intéressante, car elle indique la chaîne du prototype de l’objet JavaScript.
Chaque variable est accompagnée d’une petite icône représentative du type de données. Un objet
incorrect fait référence à un objet qui a été supprimé. Lorsqu’une variable n’est pas définie, aucune icône
ne s’affiche.
null
Booléen
Nombre
Chaîne
Objet
Objet incorrect
Vous pouvez consulter le contenu d’un objet en cliquant sur son icône. La liste se développe et affiche
les propriétés de l’objet (et ses méthodes, si l’option Afficher les méthodes objet est activée), le triangle
pointe vers le bas pour indiquer que l’objet est ouvert.
48
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Remarque : dans Photoshop® CS2, le volet Explorateur de données contient des données uniquement
pendant le débogage d’un programme JavaScript dans Photoshop.
Console JavaScript
La console JavaScript est une interface de commande et une fenêtre de résultat pour le moteur JavaScript
sélectionné. Elle vous permet de vous connecter à l’espace de noms global de ce moteur.
Ligne de commande JavaScript
Sortie JavaScript
Le champ d’entrée de la ligne de commande, qui accepte tout code JavaScript, peut servir à évaluer des
expressions ou à appeler des fonctions. Saisissez une instruction JavaScript sur la ligne de commande,
puis appuyez sur Entrée pour l’exécuter. L’instruction s’exécute dans l’étendue de pile de la ligne en
surbrillance dans l’onglet Pile d’appels, et le résultat s’affiche dans le champ de résultat.


Le champ d’entrée de la ligne de commande conserve un historique des commandes de 32 lignes.
Utilisez les touches fléchées Haut et Bas pour faire défiler les entrées précédentes.
Les commandes entrées dans ce champ s’exécutent en une seconde. Si l’exécution d’une commande
dure plus d’une seconde, l’environnement Outils ExtendScript génère une erreur de temporisation et
met fin à la tentative.
Le champ de résultat est une sortie standard pour l’exécution d’instructions JavaScript. Lorsqu’un
script génère une erreur de syntaxe, l’erreur, le nom du fichier et le numéro de ligne s’affichent ici.
L’environnement Outils ExtendScript affiche les erreurs à cet endroit au cours de sa propre phase de
démarrage. Le menu déroulant de l’onglet vous permet d’effacer le contenu du champ de résultat et de
modifier le corps des caractères utilisé pour les résultats.
Pile d’appels
L’onglet Pile d’appels est actif lors du débogage d’un programme. Lorsqu’un programme en cours
d’exécution s’arrête en raison d’un point d’arrêt ou à la suite d’une erreur d’exécution, l’onglet affiche la
séquence des appels de fonction qui a mené au point d’exécution actuel. L’onglet Pile d’appels affiche les
noms des fonctions actives, ainsi que les arguments réels transmis à ces fonctions.
Par exemple, le volet de pile ci-dessous affiche un arrêt se produisant à un point d’arrêt dans une fonction
dayOfWeek.
La fonction qui contient le point d’arrêt est mise en surbrillance dans l’onglet Pile d’appels et le volet de
l’éditeur.
Pour inspecter une fonction, cliquez dessus dans la hiérarchie des appels. Dans l’éditeur, la ligne
contenant l’appel de fonction qui a mené à ce point d’exécution est surlignée en vert. Dans l’exemple,
lorsque vous sélectionnez la ligne [Top Level] dans la pile d’appels, l’éditeur met en surbrillance la
ligne dans laquelle la fonction dayOfWeek a été appelée.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
49
Basculer d’une fonction à une autre dans la hiérarchie des appels vous permet de comprendre comment
la fonction en cours a été appelée. Les onglets Console et Explorateur de données sont coordonnés avec
le volet Pile d’appels. Lorsque vous sélectionnez une fonction dans la pile d’appels :


Le volet Console bascule son étendue pour afficher le contexte d’exécution de la fonction
sélectionnée. Vous pouvez ainsi inspecter et modifier ses variables locales. Le programme JavaScript
en cours d’exécution ne pourrait par ailleurs pas y avoir accès depuis une fonction appelée.
Le volet Explorateur de données affiche toutes les données définies dans le contexte sélectionné.
Editeur de scripts
Vous pouvez ouvrir plusieurs onglets d’éditeur de scripts. Chacun affiche un document de code source
Unicode. L’éditeur prend en charge la mise en surbrillance de la syntaxe JavaScript, la vérification de la
syntaxe JavaScript, plusieurs opérations Annuler/Rétablir et une fonction Rechercher/Remplacer avancée.
Pour déplacer le point d’insertion ou pour sélectionner du texte dans l’éditeur, utilisez le pointeur de la
souris ou des raccourcis clavier spéciaux.
Navigation et sélection à l’aide de la souris
Pour déplacer le signe d’insertion, cliquez sur le bouton gauche de la souris dans l’éditeur.
Pour sélectionner du texte à l’aide de la souris, cliquez dans du texte non sélectionné, puis faites glisser le
pointeur de la souris sur le texte à sélectionner. Si vous faites glisser le pointeur au-dessus ou en dessous
du texte affiché, la sélection s’effectue à mesure que le texte défile. Pour sélectionner un mot, cliquez
deux fois sur le mot à sélectionner. Pour sélectionner une ligne, cliquez trois fois sur la ligne à sélectionner.
Pour effectuer un glisser-déposer, cliquez sur le texte sélectionné, puis faites-le glisser vers l’emplacement
souhaité. Vous pouvez faire glisser du texte d’un volet de l’éditeur à un autre. Vous pouvez également
faire glisser du texte de l’environnement Outils ExtendScript vers une autre application acceptant cette
fonctionnalité, et inversement.
Vous pouvez déposer des fichiers de l’Explorateur ou du Finder vers l’environnement Outils ExtendScript
pour les ouvrir dans un éditeur.
Navigation et sélection à l’aide du clavier
Outre la saisie au clavier classique, l’éditeur accepte les touches de navigation ci-après. Vous pouvez
également sélectionner du texte à l’aide d’une touche de navigation, tout en maintenant la touche Maj
enfoncée.
Entrée
Insère un caractère de saut de ligne.
Retour arrière
Supprime un caractère vers la gauche.
Suppr
Supprime un caractère vers la droite.
Flèche Gauche
Déplace le point d’insertion d’un caractère vers la gauche.
50
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Flèche Droite
Déplace le point d’insertion d’un caractère vers la droite.
Flèche Haut
Déplace le point d’insertion d’une ligne vers le haut. Reste dans la colonne si
possible.
Flèche Bas
Déplace le point d’insertion d’une ligne vers le bas. Reste dans la colonne si
possible.
Pg. préc
Déplace le point d’insertion vers la page précédente.
Pg. suiv
Déplace le point d’insertion vers la page suivante.
Ctrl + flèche Haut
Fait défiler l’affichage d’une ligne vers le haut, sans déplacer le point d’insertion.
Ctrl + flèche Bas
Fait défiler l’affichage d’une ligne vers le bas, sans déplacer le point d’insertion.
Ctrl + Pg. préc
Fait défiler l’affichage vers la page précédente sans déplacer le point d’insertion.
Ctrl + Pg. suiv
Fait défiler l’affichage vers la page suivante sans déplacer le point d’insertion.
Ctrl + flèche Gauche
Déplace le point d’insertion d’un mot vers la gauche.
Ctrl + flèche Droite
Déplace le point d’insertion d’un mot vers la droite.
Orig
Déplace le point d’insertion au début d’une ligne.
Fin
Déplace le point d’insertion à la fin d’une ligne.
Ctrl + Orig
Déplace le point d’insertion au début du texte.
Ctrl + Fin
Déplace le point d’insertion à la fin du texte.
L’éditeur prend en charge la saisie avancée au clavier via IME (Windows) ou TMS (Mac OS). Cette
caractéristique est très importante pour les caractères d’Extrême-Orient.
Vérification de la syntaxe
Avant d’exécuter le nouveau script ou d’enregistrer le texte en tant que fichier de script, vous pouvez vous
assurer que le texte ne contient pas d’erreur de syntaxe JavaScript. Choisissez Vérifier la syntaxe dans le
menu Edition ou dans le menu contextuel de l’éditeur, d’un clic sur le bouton droit de la souris.


Lorsque la syntaxe du script est correcte, le message « Aucune erreur de syntaxe » s’affiche dans la
ligne d’état.
Si l’environnement Outils ExtendScript détecte des erreurs de syntaxe, telles qu’un guillemet
manquant, le texte concerné est mis en surbrillance, un son est émis, et le message d’erreur s’affiche
dans la ligne d’état pour que vous puissiez corriger l’erreur.
Débogage dans l’environnement Outils ExtendScript
Vous pouvez déboguer le code dans l’onglet de l’éditeur actif. Sélectionnez l’une des commandes de
débogage. Vous avez la possibilité d’exécuter le programme dans son intégralité ou pas à pas.
Lorsque vous exécutez du code dans l’éditeur, celui-ci s’exécute dans le moteur JavaScript sélectionné
de l’application cible en cours. L’environnement Outils ExtendScript exécute un moteur JavaScript
indépendant pour que vous puissiez modifier et exécuter rapidement un script sans avoir à vous
connecter à une application cible.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
51
Info-bulles avec évaluation
Dans l’onglet de l’éditeur, lorsque vous placez le pointeur de la souris sur une variable ou une fonction,
le résultat de l’évaluation de cette variable ou fonction s’affiche dans une info-bulle. Lorsque vous ne
déboguez pas le programme, ces info-bulles ne sont utiles que si les variables et fonctions sont connues
du moteur JavaScript. Lors du débogage, en revanche, les info-bulles permettent d’afficher la valeur en
cours d’une variable, ainsi que son type de données en cours.
Pour désactiver les info-bulles, utilisez les cases à cocher Afficher les variables JavaScript et Activer
les info-bulles d’aide sur l’interface utilisateur, dans la page Options d’aide de la boîte de dialogue
Préférences.
Contrôle de l’exécution du code
Les commandes de débogage sont disponibles dans le menu Débogage, depuis le menu contextuel de
l’éditeur (par un clic sur le bouton droit de la souris), au moyen de raccourcis clavier et depuis les boutons
de la barre d’outils. Lorsque le débogueur JavaScript est actif, utilisez ces boutons et commandes de menu
pour contrôler l’exécution du code.
Exécuter
Continuer
F5 (Windows)
Ctrl + R (Mac OS)
Lance ou reprend l’exécution d’un script.
Point
d’arrêt
Ctrl + F5 (Windows)
Cmde+. (Mac OS)
Interrompt temporairement l’exécution du script et réactive
le débogueur JavaScript.
Désactivé lorsqu’un script est en cours d’exécution.
Activé lorsqu’un script est en cours d’exécution.
Arrêter
Maj + F5 (Windows) Arrête l’exécution du script et génère une erreur d’exécution.
Ctrl + K (Mac OS)
Activé lorsqu’un script est en cours d’exécution.
Pas à pas
principal
F10 (Windows)
Ctrl + S (Mac OS)
Interrompt le script après l’exécution d’une seule ligne
JavaScript. Si l’instruction appelle une fonction JavaScript,
InDesign exécute la fonction dans son intégralité avant de
s’arrêter (il ne s’arrête pas dans la fonction).
Pas à pas
détaillé
F11 (Windows)
Ctrl + T (Mac OS)
Interrompt le script après chaque exécution d’une ligne
d’instruction JavaScript ou après l’exécution d’une instruction
faisant partie d’une fonction JavaScript appelée par le script.
Pas à pas
sortant
Maj + F11 (Windows) Lors d’une interruption temporaire de l’exécution du script
Ctrl + U (Mac OS)
dans le corps d’une fonction JavaScript, reprend l’exécution
du script jusqu’à cette fonction.
Lors d’une interruption temporaire de l’exécution du script
à l’extérieur du corps d’une fonction, reprend l’exécution du
script jusqu’à la fin du script.
Indicateurs de l’état d’exécution
Lorsque le moteur est en cours d’exécution, l’icône
ExtendScript, indique que le script est actif.
, dans l’angle supérieur droit de la fenêtre Outils
Lorsque l’exécution du script est interrompue en raison d’un point d’arrêt ou lorsque la ligne suivante est
atteinte (dans le cadre d’une exécution pas à pas), l’éditeur affiche le script en cours et surligne en jaune la
ligne en cours.
52
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Lorsqu’une erreur d’exécution se produit, l’environnement Outils ExtendScript interrompt l’exécution du
script, affiche le script en cours, surligne en rouge la ligne en cours, affiche un message d’erreur dans la
ligne d’état et émet un son.
Les scripts utilisent souvent une clause try/catch pour exécuter des codes susceptibles de générer des
erreurs d’exécution. Les erreurs sont ainsi repérées par programme avant que le script ne se termine.
Plutôt que de basculer dans le débogueur, vous pouvez autoriser un traitement standard de ces erreurs
avec la clause catch . Pour définir ce comportement, choisissez Débogage > Ne pas arrêter sur les
exceptions protégées. Certaines erreurs d’exécution telles que Mémoire insuffisante, provoquent
systématiquement l’arrêt du script, sans tenir compte de ce paramètre.
Définition de points d’arrêt
Lors du débogage d’un script, il peut être très pratique que l’exécution du script s’arrête sur certaines
lignes ; vous pouvez ainsi inspecter l’état de l’environnement, vérifiez que les appels de fonction sont
correctement imbriqués ou que les variables contiennent les données souhaitées.



Pour interrompre l’exécution d’un script sur une ligne donnée, définissez un point d’arrêt en cliquant à
gauche du numéro de la ligne. Un point d’arrêt est signalé par un point plein.
Pour désactiver temporairement un point d’arrêt, cliquez une deuxième fois. Le point plein se
transforme en point évidé.
Pour supprimer un point d’arrêt, cliquez une troisième fois. L’icône disparaît.
Certains points d’arrêt doivent être conditionnels. Par exemple, si vous définissez un point d’arrêt dans
une boucle exécutée des milliers de fois, il est fort probable que vous ne souhaitiez pas que le programme
s’arrête à chaque boucle, mais uniquement toutes les 1 000 itérations.
Vous pouvez associer une condition à un point d’arrêt, sous la forme d’une expression JavaScript. A
chaque fois que le programme atteint le point d’arrêt, il exécute l’expression JavaScript. Si l’évaluation de
l’expression est un nombre non nul ou true, l’exécution s’arrête.
Pour définir un point d’arrêt conditionnel dans une boucle, par exemple, l’expression conditionnelle peut
être la suivante : « i >= 1000 » ce qui signifie que l’exécution du programme s’arrête si la valeur de la
variable d’itération i est égale ou supérieure à 1 000.
Adobe InDesign CS2 Guide des scripts
Utilisation des fonctions et outils ExtendScript
Vous pouvez définir des points d’arrêt aux lignes qui ne contiennent pas de code, comme celles
des commentaires. Lorsque l’environnement Outils ExtendScript exécute le programme, il déplace
automatiquement le point d’arrêt à la ligne suivante contenant réellement du code.
Icônes des points d’arrêt
Chaque point d’arrêt est représenté par une icône, à gauche du numéro de ligne. Un losange représente
un point d’arrêt conditionnel, un rond un point d’arrêt non soumis à une condition. Une icône évidée
représente un point d’arrêt désactivé, une icône pleine un point d’arrêt activé.
Point d’arrêt non soumis à une condition. L’exécution s’arrête ici.
Point d’arrêt non soumis à une condition, désactivé. L’exécution ne s’arrête pas.
Point d’arrêt conditionnel. L’exécution s’arrête si l’évaluation de l’expression JavaScript associée
est true.
Point d’arrêt conditionnel, désactivé. L’exécution ne s’arrête pas.
Onglet Points d’arrêt
L’onglet Points d’arrêt affiche tous les points d’arrêts définis dans l’onglet de l’éditeur actif. Vous pouvez
utiliser le menu déroulant de l’onglet pour ajouter, modifier ou supprimer un point d’arrêt.
Vous pouvez modifier un point d’arrêt en cliquant deux fois dessus ou en le sélectionnant et en
choisissant Ajouter ou Modifier dans le menu contextuel. Une boîte de dialogue s’ouvre. Vous avez la
possibilité de modifier le numéro de ligne, l’état du point d’arrêt, ainsi que l’instruction conditionnelle.
Lorsque le programme atteint ce point d’arrêt, le débogueur évalue cette condition. Si l’évaluation de
l’expression n’est pas true, le point d’arrêt est ignoré et l’exécution du programme se poursuit. Cela
vous donne la possibilité d’arrêter le programme uniquement lorsque certaines conditions sont réunies,
notamment lorsqu’une variable est égale à une valeur donnée.
53
54
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Profilage
L’outil de profilage permet d’optimiser l’exécution des programmes Lorsque vous activez l’option de
profilage, le moteur JavaScript collecte les informations relatives à un programme en cours d’exécution.
Il compte le nombre de fois que le programme exécute une ligne ou une fonction, ou la durée d’exécution
d’une ligne ou d’une fonction. Vous avez la possibilité de spécifier précisément les données de profilage à
afficher.
Dans la mesure où l’option de profilage ralentit considérablement la durée d’exécution du programme, le
menu Profil offre les options de profilage suivantes :
Désactivé
Outil de profilage désactivé. Il s’agit du réglage par défaut.
Fonctions
Le profileur compte tous les appels de fonction. Une fois l’exécution terminée,
il affiche le total à gauche du numéro de la ligne, à l’endroit où l’en-tête de la
fonction est défini.
Lignes
Le profileur compte le nombre d’exécution de chaque ligne. Une fois l’exécution
terminée, il affiche le total à gauche du numéro de la ligne.
La durée d’exécution est plus longue, mais les informations résultantes sont
plus détaillées.
Afficher les
informations de
durée
Au lieu de compter les fonctions ou les lignes, il enregistre la durée d’exécution
de chaque fonction ou ligne. Une fois l’exécution terminée, il affiche en
microsecondes la durée d’exécution d’une fonction ou d’une ligne, à gauche du
numéro de la ligne.
Il s’agit de la forme de profilage la moins rapide.
Aucune donnée du
profileur
Lorsque cette option est sélectionnée, les données du profileur ne s’affichent
pas.
Afficher le nombre
d’occurrences
Lorsque cette option est sélectionnée, il affiche le nombre d’occurrences.
Afficher la durée
Lorsque cette option est sélectionnée, il affiche les données de durée.
Effacer les données
du profileur
Efface toutes les données de profilage.
Enregistrer les
données sous
Enregistre les données de profilage en tant que valeurs séparées par des
virgules dans un fichier CSV pouvant être ouvert dans un tableur tel qu’Excel.
Lorsque le programme s’arrête (à la fin du programme, à un point d’arrêt ou suite à une erreur
d’exécution), l’environnement Outils ExtendScript affiche l’information dans l’éditeur, ligne par ligne. Les
données de profilage sont organisées selon le code couleur suivant :


Le vert représente le résultat le plus faible ou le temps d’exécution le plus rapide.
Le rouge représente les problèmes (une ligne exécutée un trop grand nombre de fois, par exemple) ou
la ligne dont l’exécution est la plus longue.
Cet exemple affiche des informations de durée relatives au programme. La durée d’exécution de la ligne
la plus rapide est de 4 microsecondes, et celle de la plus lente de 29 microsecondes. La durée peut ne pas
être précise à la microseconde près. Tout dépend de la résolution et de la précision des chronomètres
intégrés dans votre ordinateur.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
55
Objet Dollar ($)
Cet objet ExtendScript global offre un grand nombre d’options de débogage et de méthodes
d’information. Les propriétés de l’objet $ vous permettent d’obtenir des informations globales, telles
que l’erreur d’exécution la plus récente, et définissent des indicateurs chargés de contrôler le débogage
et le comportement de la localisation. Les méthodes vous permettent d’exporter du texte vers la
console JavaScript pendant l’exécution du script, de contrôler par programme l’exécution et d’autres
comportements d’ExtendScript et d’établir des statistiques sur l’utilisation des objets.
Propriétés de l’objet Dollar ($)
build
Nombre
Numéro de version d’ExtendScript. Lecture seule.
buildDate
Date
Date de la version d’ExtendScript. Lecture seule.
error
Chaîne
d’erreur
Informations sur l’erreur d’exécution la plus récente, contenue dans un objet
Error JavaScript.
Affecter un message d’erreur à cette propriété génère une erreur
d’exécution. Le moyen le plus sûr de générer une erreur d’exécution consiste
à rediriger un objet Error.
flags
Nombre
Récupère ou définit des indicateurs de résultat de débogage. Un AND
logique des valeurs d’indicateur de bits suivantes :

0x0002 (2) : affiche chaque ligne exécutée, accompagnée de son numéro
de ligne.

0x0040 (64) : active un nettoyage excessif de la mémoire. En général,
le nettoyage de la mémoire commence lorsque le nombre d’objets
augmente d’un certain nombre depuis le dernier nettoyage. Avec cet
indicateur, ExtendScript nettoie la mémoire après chaque instruction, ou
presque. Cela diminue considérablement les performances, mais peut
s’avérer très utile lorsque vous pressentez qu’un objet est libéré trop tôt.

0x0080 (128) : affiche tous les appels avec leurs arguments, ainsi que la
valeur renvoyée.


0x0100 (256) : active la gestion d’erreur étendue (voir la propriété
strict).
0x0200 (512) : active la fonction de localisation de la méthode
toString. Similaire à la propriété localize.
global
Object
Donne accès à l’objet global, contenant le nom d’espace global JavaScript.
level
Nombre
Active ou désactive le débogueur JavaScript. Choisissez :
locale
Chaîne

0 : pas de débogage

1 : interruption en cas d’erreur d’exécution

2 : mode de débogage complet
Récupère ou définit la langue en cours. La chaîne contient cinq caractères et
se présente sous la forme LL _ RR, où LL est un indicateur de langue ISO 639
et RR un indicateur de région ISO 3166.
A l’origine, il s’agit de la valeur que l’application ou la plate-forme
renvoie pour l’utilisateur en cours. Vous pouvez la définir pour modifier
temporairement la langue à des fins de test. Pour restaurer le paramètre de
l’application ou de la plate-forme, définissez la valeur sur undefined, null
ou sur la chaîne vide.
56
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
localize
Booléen
Active ou désactive les fonctions de localisation étendues de la méthode
toString intégrée. Reportez-vous à la section « Localisation de chaînes
ExtendScript ».
memCache
Nombre
Récupère ou définit la taille en octets de la mémoire cache d’ExtendScript.
objects
Nombre
Nombre total d’objets JavaScript définis à ce stade. Lecture seule.
os
Chaîne
Version du système d’exploitation en cours. Lecture seule.
screens
Array
(tableau
de
données)
Tableau de données des objets contenant des informations sur les écrans
associés à votre ordinateur. Chaque objet possède les propriétés left, top,
right et bottom, qui contiennent les quatre angles de chaque écran sous
la forme de coordonnées globales. Une propriété primary est true si cet
objet décrit l’écran principal.
strict
Booléen
Lorsqu’elle est true, toute tentative d’écriture dans une propriété en lecture
seule génère une erreur d’exécution. Lorsque qu’elle est true, certains
objets n’autorisent pas la création de nouvelles propriétés.
version
Chaîne
Numéro de version du moteur ExtendScript. Il doit comprendre trois parties
ainsi qu’une description. Par exemple : « 3.6.5 (debug) ». Lecture seule.
Fonctions de l’objet Dollar ($)
about
$.about ()
Affiche la boîte de dialogue « A propos de » du composant
ExtendScript et renvoie le texte de cette boîte de dialogue en tant que
chaîne.
bp
Exécute un point d’arrêt à l’emplacement actuel. Renvoie undefined.
$.bp ([condition])
Lorsque aucune condition n’est requise, il est recommandé d’utiliser
l’instruction JavaScript debugger dans le script plutôt que de faire
appel à cette méthode.
condition
Facultatif. Une chaîne contenant une instruction JavaScript à utiliser en tant que
condition. Si l’évaluation de l’instruction est true ou non nulle lorsque ce point est
atteint, l’exécution s’arrête.
clearbp
$.clearbp ([line])
line
Supprime un point d’arrêt du script en cours. Renvoie undefined.
Facultatif. Ligne dont le point d’arrêt est à supprimer. Si la valeur est 0 ou n’est pas
spécifiée, le point d’arrêt est supprimé pour le numéro de ligne en cours.
gc
Lance le nettoyage de la mémoire. Renvoie undefined.
getenv
Renvoie la valeur de la variable d’environnement spécifiée ou null si
cette variable n’est pas définie.
$.gc ()
$.getenv (envname)
envname
list
Nom de la variable d’environnement.
$.list ([classname])
classname
Collecte les informations sur les objets dans un tableau et renvoie
ce tableau en tant que chaîne. Reportez-vous à la section ci-après
« Statistiques des objets ».
Facultatif. Type de l’objet sur lequel collecter des informations. S’il n’est pas spécifié,
cette fonction collecte les informations relatives à tous les objets actuellement
définis.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
setbp
Définit un point d’arrêt dans le script en cours. Renvoie undefined.
$.setbp
([line, condition])
Lorsque aucun argument n’est requis, il est recommandé d’utiliser
l’instruction JavaScript debugger dans le script plutôt que de faire
appel à cette méthode.
line
Facultatif. Ligne au niveau de laquelle l’exécution doit s’arrêter. Si la valeur est 0 ou
n’est pas spécifiée, le point d’arrêt est défini au numéro de ligne en cours.
condition
Facultatif. Une chaîne contenant une instruction JavaScript à utiliser pour un point
d’arrêt conditionnel. Si l’évaluation de l’instruction est true ou non nulle lorsque
cette ligne est atteinte, l’exécution s’arrête.
sleep
Interrompt le lien appelant pendant le nombre de millisecondes
donné. Renvoie undefined.
$.sleep (milliseconds)
Pendant une période de veille, cette fonction vérifie toutes les
100 millisecondes si elle doit mettre fin ou non à la période de veille.
Cela peut se produire si une demande d’interruption (break) est passée
ou si le délai d’exécution du script est arrivé à expiration.
milliseconds
Durée d’attente (en millisecondes).
summary
Collecte un résumé des totaux d’objets dans un tableau et renvoie ce
tableau en tant que chaîne. Le tableau affiche le nombre d’objets pour
chaque classe spécifiée. Par exemple :
$.summary ([classname])
3 Array
5 String
classname
Facultatif. Type d’objet à compter. S’il n’est pas spécifié, cette fonction compte tous
les objets actuellement définis.
write
Ecrit le texte spécifié dans la console JavaScript. Renvoie undefined.
text
Une ou plusieurs chaînes à écrire, concaténées pour ne former qu’une
seule chaîne.
writeln
Ecrit le texte spécifié dans la console JavaScript et ajoute une séquence
de saut de ligne. Renvoie undefined.
text
Une ou plusieurs chaînes à écrire, concaténées pour ne former qu’une
seule chaîne.
$.write
(text[, text...]...)
$.writeln
(text[, text...]...)
Statistiques des objets
Le résultat de $.list() est mis en forme comme dans l’exemple ci-dessous.
Address
L
Refs
Prop
Class
0092196c
4
0
Function
[toplevel]
00976c8c
2
1
Object
Object
00991bc4 L
1
1
LOTest
LOTest
0099142c L
2
2
Function
LOTest
00991294
1
0
Object
Object
Name
espace de travail
57
58
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Les colonnes affichent les informations d’objet suivantes :
Address
Adresse physique de l’objet en mémoire.
L
Cette colonne contient la lettre « L » si l’objet est un objet LiveObject (c.-à-d. un type de
données interne).
Refs
Compte de référence de l’objet.
Prop
Compte de référence secondaire relatif au nombre de propriétés faisant référence à l’objet.
Le programme de nettoyage de la mémoire utilise ce compte pour rompre les références
circulaires. Si le compte de référence est différent du nombre de propriétés JavaScript qui
lui font référence, l’objet est considéré comme pouvant être utilisé ailleurs et n’est pas
nettoyé.
Class
Nom de classe de l’objet.
Name
Nom de l’objet. Ce nom ne correspond pas au nom de la propriété dans laquelle l’objet a
été stocké. En général, le nom se rapporte aux objets Function, pour lesquels il est utilisé
pour le nom de la fonction ou de la méthode. Les noms entre crochets sont des noms
internes aux scripts. Si l’objet possède un ID, celui-ci s’affiche dans la dernière colonne.
Interface Reflection d’ExtendScript
ExtendScript offre une interface Reflection qui vous permet de tout savoir sur un objet. Vous pouvez
notamment récupérer son nom, une description, le type de données attendu pour les propriétés, les
arguments et la valeur de renvoi pour les méthodes, ainsi que les valeurs par défaut ou limites de valeurs
d’entrée.
Objet Reflection
Chaque objet possède une propriété reflect qui renvoie un objet Reflection rapportant le contenu
de l’objet. Ainsi, le code ci-dessous vous permet d’afficher les valeurs de toutes les propriétés d’un objet.
var f= new File ("myfile");
var props = f.reflect.properties;
for (var i = 0; i < props.length; i++) {
$.writeln(‘this property ‘ + props[i].name + ‘ is ‘ + f[props[i].name]);
}
Propriétés des objets Reflection
Toutes les propriétés sont en lecture seule.
description
Chaîne
Texte court décrivant l’objet ou undefined si aucune description
n’est disponible.
help
Chaîne
Texte long décrivant l’objet de façon plus précise ou undefined si
aucune description n’est disponible.
methods
Tableau de
données
d’objets
ReflectionInfo
Tableau de données d’objets ReflectionInfo contenant toutes
les méthodes de l’objet, définies dans la classe ou dans l’instance
spécifique.
name
Chaîne
Nom de classe de l’objet.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
properties
Tableau de
données
d’objets
ReflectionInfo
59
Tableau de données d’objets ReflectionInfo contenant toutes
les propriétés de l’objet, définies dans la classe ou dans l’instance
spécifique. Pour les objets aux propriétés dynamiques (définies
à l’exécution), la liste répertorie uniquement les propriétés
dynamiques auxquelles le script a déjà accédé. Par exemple, dans
un objet enveloppant une balise HTML, les noms des attributs HTML
sont déterminés au moment de l’exécution.
Fonctions des objets Reflection
find
reflectionObj.find
(name)
name
Renvoie l’objet ReflectionInfo pour la propriété nommée de l’objet
ou null si cette propriété n’existe pas. Utilisez cette méthode pour
récupérer des informations sur les propriétés dynamiques auxquelles le
script n’a pas encore accédé, mais dont l’existence est connue.
Propriété pour laquelle vous souhaitez récupérer des informations.
➤ Exemples
Le code ci-dessous détermine le nom de classe d’un objet.
obj = new String ("hi");
obj.reflect.name; // => String
Le code suivant permet d’obtenir la liste de toutes les méthodes :
obj = new String ("hi");
obj.reflect.methods; //=> indexOf,slice,...
obj.reflect.find ("indexOf"); // => the method info
Le code ci-dessous permet d’obtenir une liste des propriétés.
Math.reflect.properties; //=> PI,LOG10,...
Le code ci-dessous permet d’obtenir le type de données d’une propriété.
Math.reflect.find ("PI").type; // => number
Objet ReflectionInfo
Cet objet contient des informations sur une propriété, une méthode ou un argument de méthode.

Vous pouvez accéder aux objets ReflectionInfo dans des tableaux de données des propriétés
et des méthodes d’un objet Reflection, selon le nom ou l’index, comme suit :
obj = new String ("hi");
obj.reflect.methods[0];
obj.reflect.methods[“indexOf”];

Vous pouvez accéder aux objets ReflectionInfo pour les arguments d’une méthode dans le
tableau de données des arguments de l’objet ReflectionInfo pour la méthode, selon l’index,
comme suit :
obj.reflect.methods[“indexOf”].arguments[0];
Propriétés des objets ReflectionInfo
arguments
Tableau de
données
d’objets
ReflectionInfo
A une méthode donnée correspond un tableau de données d’objets
ReflectionInfo décrivant chaque argument de méthode.
60
Utilisation des fonctions et outils ExtendScript
dataType
Chaîne
Adobe InDesign CS2 Guide des scripts
Type de données de l’élément. Choisissez :

boolean

number

string

Classname : nom de classe d’un objet.
Remarque : les noms de classe commencent par une majuscule.
Ainsi, la valeur string représente une chaîne
JavaScript, alors que String est un objet String
JavaScript.

* : tout type. Il s’agit du réglage par défaut.

null

undefined : renvoie un type de données pour une fonction qui
ne renvoie aucune valeur.

unknown
defaultValue
Tout type
Valeur par défaut d’un argument de méthode ou d’une propriété,
ou undefined s’il n’existe pas de valeur par défaut, si la propriété
n’est pas définie ou si l’élément est une méthode.
description
Chaîne
Texte court décrivant l’objet ou undefined si aucune description
n’est disponible.
help
Chaîne
Texte long décrivant l’objet de façon plus précise ou undefined si
aucune description n’est disponible.
isCollection
Booléen
Lorsqu’elle est true, la méthode ou la propriété renvoie une
collection. Dans le cas contraire, elle renvoie false.
max
Nombre
Valeur numérique maximale pour l’élément ou undefined s’il n’y a
pas de maximum ou si l’élément est une méthode.
min
Nombre
Valeur numérique minimale pour l’élément ou undefined s’il n’y a
pas de minimum ou si l’élément est une méthode.
name
Chaîne
Nombre
Nom de l’élément. Chaîne ou nombre pour un index de tableau de
données.
type
Chaîne
Type de l’élément. Choisissez :

readonly : propriété en lecture seule.

readwrite : propriété en lecture-écriture.

createonly : propriété valide uniquement pendant la création
d’un objet.

method : méthode.
Localisation de chaînes ExtendScript
La localisation est le processus de traduction et de manipulation d’une interface de sorte qu’elle semble
avoir été conçue à l’origine pour une langue donnée. Avec ExtendScript, vous avez la possibilité de
localiser les chaînes de l’interface utilisateur de votre script. La langue est choisie par l’application, au
lancement, selon la langue locale du système d’exploitation.
Vous pouvez localiser le texte des parties de l’interface utilisateur qui s’affichent à l’écran. Vous pouvez
localiser toute chaîne explicitement en utilisant la fonction Global localize, prenant comme
argument un objet localisation contenant la version localisée d’une chaîne.
Adobe InDesign CS2 Guide des scripts
Utilisation des fonctions et outils ExtendScript
61
Un objet Localization est un littéral d’objet JavaScript dont les noms de propriété sont des noms de
langue et dont les valeurs de propriété sont les chaînes de texte localisées. Le nom de langue est un
code de langue standard comprenant éventuellement un identificateur de région. Pour obtenir des
informations sur la syntaxe, reportez-vous à la section « Noms de langue ».
Dans l’exemple suivant, un objet msg contient des chaînes de texte localisées pour deux langues. Cet
objet contient le texte d’une boîte de dialogue d’avertissement.
msg = { en: "Hello, world", de: "Hallo Welt" };
alert (msg);
ExtendScript associe la langue et la plate-forme actives à l’une des propriétés de l’objet et utilise la chaîne
associée. Pour un système allemand, par exemple, la propriété de: “Hallo Welt” est convertie en
chaîne “Hallo Welt”.
Valeurs des variables dans les chaînes localisées
Certaines chaînes localisées doivent contenir des données supplémentaires dont l’emplacement et l’ordre
peuvent varier selon la langue utilisée.
Vous pouvez inclure des variables dans les valeurs de chaîne de l’objet Localization, sous la forme
suivante %n. Les variables sont remplacées dans la chaîne renvoyée par les résultats des expressions
JavaScript, fournies en tant qu’arguments supplémentaires de la fonction localize. La variable %1
correspond au premier argument supplémentaire, la variable %2 au deuxième, etc.
Comme le remplacement se produit une fois la chaîne localisée choisie, les valeurs des variables sont
insérées aux emplacements justes. Par exemple :
today = {
en: "Today is %1/%2.",
de: "Heute ist der %2.%1."
};
d = new Date();
alert (localize (today, d.getMonth()+1, d.getDate()));
Activation de la localisation automatique
ExtendScript comprend une fonction de localisation automatique. Lorsqu’elle est activée, vous pouvez
définir un objet Localization directement en tant que valeur d’une propriété acceptant une chaîne
localisable, sans faire appel à la fonction localize. Par exemple :
msg = { en: "Yes", de: "Ja", fr: "Oui" };
alert (msg);
Pour utiliser la traduction automatique des objets Localization, activez la localisation dans votre script
avec l’instruction ci-dessous.
$.localize = true;
La fonction localize effectue toujours la traduction sans tenir compte du paramètre de la variable
$.localize. Par exemple :
msg = { en: "Yes", de: "Ja", fr: "Oui" };
//Only works if the $.localize=true
alert (msg);
//Always works, regardless of $.localize value
alert ( localize (msg));
Si vous avez besoin d’inclure des variables dans les chaînes localisées, utilisez la fonction localize.
62
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Noms de langue
Un nom de langue est une chaîne d’identification contenant un indicateur de langue ISO 639 et
éventuellement un indicateur de région ISO 3166, séparé de l’indicateur de langue par un trait de
soulignement.


La norme ISO 639 définit un ensemble d’abréviations de langue en deux lettres, telles que en pour
l’anglais et de pour l’allemand.
La norme ISO 3166 définit un code de région, également identifié par deux lettres. Vous pouvez
ajouter ce code à l’identificateur de langue en le faisant précéder d’un trait de soulignement. Ce code
est facultatif. Par exemple, en _ US pour l’anglais des E.-U. et en _ GB pour l’anglais britannique.
L’objet ci-dessous définit un message en anglais britannique, un autre en anglais (sans distinction de
région) et enfin un dernier en allemand (sans distinction de région).
message = {
en_GB: "Please select a colour."
en: "Please select a colour."
de: "Bitte wählen Sie eine Farbe."
};
Si vous avez besoin de spécifier des messages différents selon les plates-formes, vous pouvez ajouter un
trait de soulignement supplémentaire suivi du nom de la plate-forme : Win, Mac ou Unix . Les objets cidessous, par exemple, définissent un message en anglais britannique pour Mac OS, un message en anglais
(sans distinction de région) également pour Mac OS et enfin un message en anglais (sans distinction de
région) à afficher quelle que soit la plate-forme utilisée.
pressMsg = {
en_GB_Mac: "Press Cmd-S to select a colour.",
en_Mac: "Press Cmd-S to select a color.",
en: "Press Ctrl-S to select a color."
};
Tous les identificateurs sont sensibles à la casse. Par exemple, EN _ US est incorrect.
➤ Résolution des noms de langue
1. ExtendScript récupère la langue de l’application hôte, en _ US, par exemple.
2. Il ajoute l’identificateur de la plate-forme, en _ US _ Win, par exemple.
3. Il cherche ensuite une propriété associée. S’il en trouve une, il renvoie la chaîne de la valeur.
4. S’il n’en trouve pas, il supprime l’identificateur de la plate-forme (en _ US, par exemple) et effectue
une nouvelle tentative.
5. S’il n’en trouve pas, il supprime l’identificateur de la région (en, par exemple) et effectue une nouvelle
tentative.
6. S’il n’en trouve pas, il essaie uniquement avec l’identificateur en (la langue par défaut est l’anglais).
7. S’il n’en trouve pas, il renvoie l’ensemble de l’objet Localizer.
Test de la localisation
ExtendScript stocke la langue active dans la variable $.locale. Cette variable est mise à jour lorsque la
langue de l’application hôte change.
Pour tester les chaînes localisées, restaurez temporairement la langue. Pour restaurer le comportement
d’origine, définissez la variable sur null, false, 0, ou sur la chaîne vide. Par exemple :
$.locale = "ru"; // try your Russian messages
$.locale = null; // restore to the locale of the app
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
63
Fonction localize globale
La fonction localize peut être utilisée pour fournir des chaînes localisées lorsqu’une valeur de texte
affiché est spécifiée.
localize
localize (localization_obj[,
args])
localize (ZString)
localization_obj
Renvoie la chaîne localisée pour la langue en cours.
Littéral d’objet JavaScript dont les noms de propriété sont des noms de
langue et dont les valeurs de propriété sont les chaînes de texte localisées.
Le nom de langue est un identificateur conforme à la norme ISO 3166. Il s’agit
d’une abréviation en deux lettres, telle que « en » pour l’anglais et « de » pour
l’allemand.
Par exemple :
btnText = { en: "Yes", de: "Ja", fr: "Oui" };
b1 = w.add ("button", undefined, localize (btnText));
La valeur de chaîne de chaque propriété peut contenir des variables (sous
la forme %1, %2, etc.) correspondant aux arguments supplémentaires.
La variable est remplacée par le résultat de l’évaluation de l’argument
correspondant dans la chaîne renvoyée.
args
Facultatif. Expressions JavaScript supplémentaires correspondant aux
variables dans les valeurs de chaîne spécifiées dans l’objet Localization.
Le premier argument correspond à la variable %1, le deuxième à la
variable %2, et ainsi de suite.
Chaque expression est évaluée, et le résultat inséré à l’emplacement de la
variable dans la chaîne renvoyée.
➤ Exemple
today = {
en: "Today is %1/%2",
de: "Heute ist der %2.%1."
};
d = new Date();
alert (localize (today, d.getMonth()+1, d.getDate()));
ZString
Pour une utilisation interne uniquement. Le format ZString est un format
Adobe interne pour les chaînes localisées. Il peut notamment être rencontré
dans les scripts Adobe. Il se présente sous la forme d’une chaîne commençant
par $$$ et contenant un chemin d’accès vers la chaîne localisée se trouvant
dans un dictionnaire ZString installé. Par exemple :
w = new Window ("dialog", localize ("$$$/UI/title1=Sample"));
Fonctions d’assistance de notification utilisateur
ExtendScript contient un ensemble de fonctions vous permettant d’afficher des messages courts pour
l’utilisateur, via des boîtes de dialogue conformes au standard de la plate-forme utilisée. Les trois types de
boîte de dialogue de message disponibles sont les suivants :


Alert : permet d’afficher une boîte de dialogue contenant un message court et un bouton OK.
Confirm : permet d’afficher une boîte de dialogue contenant un message court et deux boutons
(Oui et Non) permettant à l’utilisateur d’accepter ou de refuser une action.
64
Utilisation des fonctions et outils ExtendScript

Adobe InDesign CS2 Guide des scripts
Prompt : permet d’afficher une boîte de dialogue contenant un message court, un champ d’entrée de
texte et les boutons OK et Annuler. Cette boîte de dialogue permet à l’utilisateur d’entrer une valeur
pour le script.
Ces boîtes de dialogues sont personnalisables dans une certaine limite. L’apparence des boîtes de
dialogue est spécifique à la plate-forme utilisée.
Fonction alert globale
alert
alert (message[, title, errorIcon]);
Affiche une boîte de dialogue conforme au standard
de la plate-forme, contenant un message court et un
bouton OK. Renvoie undefined.
message
Chaîne pour le message affiché.
title
Facultatif. Chaîne qui apparaît comme titre de boîte de dialogue, si la plate-forme
utilisée prend en charge les titres. Mac OS ne prend pas en charge les titres pour les
boîtes de dialogue d’alerte. La chaîne de titre par défaut est « Alerte de script ».
errorIcon
Facultatif. Lorsqu’elle est true, l’icône d’alerte conforme au standard de la plate-forme
est remplacée, dans la boîte de dialogue, par l’icône d’erreur de la plate-forme utilisée.
La valeur par défaut est false.
➤ Exemples
Les illustrations ci-dessous présentent des boîtes de dialogue d’alerte simples pour Windows et Mac OS.
Les illustrations illustrations ci-dessous présentent des boîtes de dialogue d’alerte avec une icône d’erreur.
Fonction confirm globale
confirm
confirm (message[,noAsDflt
,title ]);
Affiche une boîte de dialogue conforme au standard
de la plate-forme, contenant un message court et deux
boutons (Oui et Non). Renvoie true si l’utilisateur clique
sur Oui, false s’il clique sur Non.
message
Chaîne pour le message affiché.
noAsDflt
Facultatif. Lorsqu’elle est true, le bouton Non est le choix par défaut. Il est
sélectionné si l’utilisateur appuie sur la touche Entrée. La valeur par défaut
est false, ce qui signifie que Oui est le choix par défaut.
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
title
65
Facultatif. Chaîne qui apparaît comme titre de boîte de dialogue, si la plateforme utilisée prend en charge les titres. Mac OS ne prend pas en charge
les titres pour les boîtes de dialogue de confirmation. La chaîne de titre par
défaut est « Alerte de script ».
➤ Exemples
Les illustrations ci-dessous présentent des boîtes de dialogue de confirmation simples pour Windows et
Mac OS.
Les illustrations ci-dessous présentent des boîtes de dialogue de confirmation avec le bouton Non défini
par défaut.
Fonction prompt globale
prompt
prompt (message, preset[, title
]);
Affiche une boîte de dialogue conforme au standard
de la plate-forme, contenant un message court, un
champ d’entrée de texte et deux boutons (OK et
Annuler). Renvoie la valeur du champ d’entrée de texte si
l’utilisateur clique sur OK, et null s’il clique sur Annuler.
message
Chaîne pour le message affiché.
preset
Valeur initiale à afficher dans le champ d’entrée de texte.
title
Facultatif. Chaîne qui apparaît comme titre de boîte de dialogue. La chaîne
Windows apparaît dans le cadre de la fenêtre alors que la chaîne Mac OS
apparaît au-dessus du message. La chaîne de titre par défaut est « Invite de
script ».
➤ Exemples
Les illustrations ci-dessous présentent des boîtes de dialogue d’invite simples pour Windows et Mac OS.
66
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Les illustrations ci-dessous présentent des boîtes de dialogue d’invite avec une valeur title spécifiée.
Spécification de valeurs de mesure
Dans ExtendScript, l’objet UnitValue représente des valeurs de mesure. Les propriétés et méthodes de
l’objet UnitValue simplifient la modification de la valeur, de l’unité, voire de la valeur et de l’unité, ou la
conversion d’une unité en une autre.
Objet UnitValue
Il représente des valeurs de mesure qui contiennent une valeur numérique et une unité de mesure.
Constructeur d’objet UnitValue
Le constructeur UnitValue crée un nouvel objet UnitValue. Le mot-clé new est facultatif.
myVal = new UnitValue (value, unit);
myVal = new UnitValue ("value unit");
myVal = new UnitValue (value, "unit");
value est un nombre, et unit correspond à une chaîne abrégée, au singulier ou au pluriel, comme dans le
tableau ci-dessous.
Abréviation
Singulier
Pluriel
Commentaires
in
inch
inches
2,54 cm
ft
foot
feet
30,48 cm
yd
yard
yards
91,44 cm
mi
mile
miles
1609,344 m
mm
millimeter
millimeters
cm
centimeter
centimeters
m
meter
meters
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
km
kilometer
kilometers
pt
point
points
pouces / 72
pc
pica
picas
points * 12
tpt
traditional point
traditional points
pouces / 72,27
tpc
traditional pica
traditional picas
12 tpt
ci
cicero
ciceros
12,7872 pt
px
pixel
pixels
sans base (voir ci-après)
%
percent
(pourcentage)
percent
(pourcentage)
sans base (voir ci-après)
Lorsqu’un type d’unité inconnu est entré, le type est défini sur « ? », et l’objet UnitValue renvoie
« UnitValue 0,00000 ».
Dans ces exemples, tous les formats sont équivalents.
myVal = new UnitValue (12, "cm");
myVal = new UnitValue ("12 cm");
myVal = UnitValue ("12 centimeters");
Propriétés des objets UnitValue
baseUnit
UnitValue
Un objet UnitValue qui définit la taille d’un pixel, ou la taille totale devant
servir de base pour les valeurs des pourcentages. Celui-ci est utilisé comme
unité de conversion de base pour les pixels et les pourcentages ; reportezvous à la section « Conversion de valeurs en pixels et de pourcentages ».
La valeur par défaut est 0,013889 pouce (1/72 pouce), l'unité de conversion
de base pour les pixels à 72 ppp. Réglez sur null pour restaurer la valeur
par défaut.
type
Chaîne
Type d’unité (sous sa forme abrégée). Exemples : « cm » ou « in ».
valeur
Nombre
La valeur de mesures numériques.
Fonctions des objets UnitValue
as
unitValueObj.as (unit)
Renvoie la valeur numérique de cet objet dans l’unité donnée.
Si l’unité est inconnue ou ne peut pas être calculée, une erreur
d’exécution est générée.
unit
Type d’unité (sous sa forme abrégée). Exemples : « cm » ou « in ».
convert
unitValueObj.convert
(unit)
unit
Convertit cet objet dans l’unité donnée, redéfinissant le type et la
valeur en conséquence. Renvoie true si la conversion réussit. Si
l’unité est inconnue ou que l’objet ne peut pas être converti, une
erreur d’exécution est générée et renvoie false.
Type d’unité (sous sa forme abrégée). Exemples : « cm » ou « in ».
67
68
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Conversion de valeurs en pixels et de pourcentages
La conversion de mesures d’unités différentes requiert une unité de base commune. Par exemple, le mètre
est l’unité de base pour les longueurs. Toutes les unités de longueur peuvent être converties en mètres.
Ainsi, toute unité de longueur peut être convertie en une autre unité de longueur.
Les pixels et les pourcentages n’ont pas d’unité de base commune standard. Les mesures en pixels
correspondent à une résolution d’affichage, et les mesures en pourcentage à une taille totale absolue.


Pour convertir les pixels en unités de longueur, vous devez connaître la taille d’un pixel. La taille d’un
pixel dépend de la résolution d’affichage. 72 ppp, une mesure de résolution classique, signifie qu’il y a
72 pixels par pouce. La base de conversion pour les pixels à 72 ppp est 0,013889 pouce (1/72 pouce).
Les pourcentages correspondent à une mesure totale. Par exemple, 10 % de 100 pouces est égal à
10 pouces, et 10 % de 1 mètre est égal à 0,1 mètre. La base de conversion pour un pourcentage est la
valeur d’unité correspondant à 100 %.
La valeur baseUnit par défaut d’un objet unitValue est 0,013889 pouces (base pour les pixels à
72 ppp). Si l’objet unitValue est associé à des pixels à une autre résolution ou à un pourcentage, vous
devez définir la valeur baseUnit en conséquence. La valeur baseUnit est un objet unitValue qui
contient une valeur et une unité.
Pour un système dont la résolution est différente, modifiez la valeur baseUnit dans la classe UnitValue.
La valeur par défaut pour tous les nouveaux objets unitValue est alors modifiée. Par exemple, pour
multiplier par deux la résolution des pixels :
UnitValue.baseUnit = UnitValue (1/144, "in"); //144 ppp
Pour restaurer la valeur par défaut, affectez null à la propriété de la classe :
UnitValue.baseUnit = null; //restore default
Vous pouvez remplacer la valeur par défaut pour tout objet unitValue donné, en définissant la propriété
dans l’objet concerné. Par exemple, pour créer un objet unitValue pour des pixels de 96 ppp :
pixels = UnitValue (10, "px");
myPixBase = UnitValue (1/96, "in");
pixels.baseUnit = myPixBase;
Pour les pourcentages, définissez la propriété baseUnit à la valeur de mesure pour 100 %. Par exemple,
pour créer un objet unitValue pour 40 % de 10 pieds :
myPctVal = UnitValue (40, "%");
myBase = UnitValue (10, "ft")
myPctVal.baseUnit = myBase;
Utilisez la méthode as pour obtenir un pourcentage en tant que valeur d’unité :
myFootVal = myPctVal.as ("ft"); // => 4
myInchVal = myPctVal.as ("in"); // => 36
Vous pouvez convertir un objet unitValue en mesure absolue en pixels ou en pourcentage de la même
manière :
myMeterVal = UnitValue (10, "m"); // 10 meters
myBase = UnitValue (1, "km");
myMeterVal.baseUnit = myBase; //as a percentage of 1 kilometer
pctOfKm = myMeterVal.as (‘%’); // => 1
myVal = UnitValue ("1 in"); // Define measurement in inches
// convert to pixels using default base
myVal.convert ("px"); // => value=72 type=px
Calcul avec des valeurs d’unité
Les objets UnitValue peuvent être utilisés dans des expressions de calcul JavaScript. Le type de
l’opérateur détermine la façon selon laquelle la valeur est utilisée.

Opérateurs unaires (~, !, +, -)
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
~unitValue
La valeur numérique est convertie en entier à 32 bits avec bits inversés.
!unitValue
Le résultat est true si la valeur numérique n’est pas nulle, et false dans le cas
contraire.
+unitValue
Le résultat est la valeur numérique.
-unitValue
Le résultat est la valeur négative de la valeur numérique.

69
Opérateurs binaires (+, -, *, /, %)
Si une opérande est l’objet unitValue et que l’autre est un nombre, l’opération s’applique au numéro
et à la valeur numérique de l’objet. L’expression renvoie un nouvel objet unitValue avec pour
valeur le résultat. Par exemple :
val = new UnitValue (“10 cm”);
res = val * 20;
// res is a UnitValue (200, “cm”);
Si les deux opérandes sont des objets unitValue, JavaScript convertit l’opérande de droite dans
l’unité de l’opérande de gauche et applique l’opération aux valeurs qui en résultent. L’expression
renvoie un nouvel objet unitValue avec l’unité de l’opérande de gauche et la valeur résultante.
Par exemple :
a = new UnitValue (“1 m”);
b = new UnitValue (“10 cm”);
a + b;
// res is a UnitValue (1.1, “m”);
b + a;
// res is a UnitValue (110, “cm”);

Comparaisons (=, ==, <, >, <=, >=)
Si une opérande est un objet unitValue et que l’autre est un nombre, JavaScript compare le nombre
à la valeur numérique de l’objet unitValue.
Si les deux opérandes sont des objets unitValue, JavaScript convertit les deux objets dans la même
unité, puis compare les valeurs numériques converties.
Par exemple :
a
b
a
a
a
= new UnitValue (“98 cm”);
= new UnitValue (“1 m”);
< b;
// => true
< 1;
// => false
== 98; // => true
Prise en charge de la programmation modulaire
ExtendScript prend en charge une approche modulaire de la programmation. En effet, vous avez la
possibilité d’inclure un script dans un autre en tant que ressource et d’autoriser un script à exporter des
définitions pouvant être importées et utilisées dans un autre script.
Directives de prétraitement
ExtendScript fournit des directives de prétraitement permettant d’inclure des scripts externes, de
nommer des scripts, de spécifier un moteur ExtendScript et de définir certains indicateurs. Vous pouvez
définir ces directives des deux façons suivantes :

Avec une instruction de style C, commençant par le caractère # :
#include "file.jsxinc"

Dans un commentaire dont le texte commence par le caractère @ :
// @include “file.jsxinc”
70
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Lorsqu’une directive compte un ou plusieurs arguments et qu’un d’entre eux contient un caractère
non alphanumérique, l’argument en question doit être mis entre guillemets simples ou doubles. C’est
notamment le cas pour les chemins d’accès et noms de fichiers qui contiennent un grand nombre de
points et de barres obliques.
#engine name
Identifie le moteur ExtendScript qui exécute ce script. Cela permet à d’autres
moteurs de se référer aux scripts de ce moteur en important les fonctions et
variables exportées. Reportez-vous à la section « Importation et exportation de
scripts ».
Pour le nom, utilisez la syntaxe d’identificateur JavaScript. Les guillemets sont
facultatifs. Par exemple :
#engine library
#engine "$lib"
#include file
Inclut un fichier source JavaScript à partir d’un autre emplacement. Insère le
contenu du fichier nommé dans ce fichier, à l’emplacement de cette instruction.
L’argument file est une spécification de fichier portable Adobe. Reportez-vous à
la section relative à la spécification des chemins d’accès.
Utilisez l’extension de fichier .jsxinc pour les fichiers include JavaScript. Par
exemple :
#include "../include/lib.jsxinc"
Pour définir un ou plusieurs chemins à analyser par l’instruction #include,
utilisez la directive de prétraitement #includepath.
Si le fichier à inclure est introuvable, ExtendScript génère une erreur
d’exécution.
Le code source inclus ne s’affiche pas dans le débogueur. Vous ne pouvez donc
pas définir de point d’arrêt dans ce code.
#includepath path
Un ou plusieurs chemins que l’instruction #include doit utiliser pour localiser
les fichiers à inclure. Le point-virgule (;) permet de séparer les différents noms
de chemin.
Si le nom d’un fichier #include commence par une barre oblique (/), il s’agit
d’un nom de chemin absolu. Les chemins include sont alors ignorés. Sinon,
ExtendScript tente de localiser le fichier en faisant précéder le nom du fichier
de chaque chemin défini par l’instruction #includepath.
Par exemple :
#includepath "include;../include"
#include "file.jsxinc"
Il est possible d’utiliser plusieurs instructions #includepath. La liste des
chemins change à mesure que les instructions #includepath sont exécutées.
Par mesure de sécurité, ExtendScript utilise également le contenu de la variable
d’environnement JSINCLUDE en tant que liste de chemins include.
Certains moteurs peuvent comprendre un ensemble prédéfini de chemins
include. Dans ce cas, le chemin spécifié par #includepath est testé avant les
chemins prédéfinis. Si, par exemple, un chemin prédéfini du moteur est défini
sur predef;predef/include, l’exemple précédent génère la séquence de
recherche suivante :

file.jsxinc : recherche littérale

include/file.jsxinc : premier chemin #includepath

../include/file.jsxinc : second chemin #includepath

predef/file.jsxinc : premier chemin de moteur prédéfini

predef/include/file.jsxinc : second chemin de moteur prédéfini
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
#script name
71
Nomme un script. Les guillemets sont facultatifs, mais requis pour les noms qui
contiennent des espaces ou des caractères spéciaux. Par exemple :
#script SetupPalette
#script "Load image file"
La valeur name s’affiche dans l’onglet de l’éditeur de l’environnement
Outils ExtendScript. Un nom unique généré à partir d’un nombre est affecté à
chaque script sans nom.
#strict on
Active la recherche d’erreurs strictes. Reportez-vous à la propriété strict de
l’objet Dollar ($).
#target name
Définit l’application cible de ce fichier JSX. La valeur name est un indicateur
d’application ; reportez-vous à la section « Indicateurs d’application et d’espace
de noms ». Les guillemets sont facultatifs.
Si l’environnement Outils ExtendScript est enregistré comme gestionnaire pour
les fichiers dont l’extension est .jsx (réglage par défaut), ouvrir le fichier a
pour effet d’ouvrir l’application cible afin d’exécuter le script. Si cette directive
est absente, l’environnement Outils ExtendScript charge et affiche le script.
L’utilisateur doit cliquer deux fois sur le fichier à ouvrir dans un explorateur de
fichiers. Le script, quant à lui, doit utiliser la méthode execute de l’Objet File
pour ouvrir un fichier.
Importation et exportation de scripts
Le langage ExtendScript JavaScript a été étendu pour prendre en charge l’accès aux appels de fonction et
aux variables via différents moteurs ExtendScript et modules de code source. Dans un script, l’instruction
export permet de mettre les définitions de ce script à la disposition d’autres scripts faisant appel à
l’instruction import pour accéder à ces définitions.
Pour utiliser cette fonction, le moteur ExtendScript du script qui exporte doit être nommé par le biais
de l’instruction de prétraitement #engine. Le nom doit respecter la syntaxe d’attribution de noms
JavaScript. Il ne peut pas être une expression.
Par exemple, le script ci-dessous peut servir de bibliothèque ou de fichier ressource. Il définit et exporte
une constante et une fonction.
#engine library
export random, libVersion;
const libVersion = "Library 1.0";
function random (max) {
return Math.floor (Math.random() * max);
}
Un script exécuté dans un autre moteur peut importer les éléments exportés. L’instruction d’importation
identifie le script de ressources à l’origine des variables exportées en utilisant le nom du moteur.
import library.random, library.libVersion;
print (random (100));
Pour importer tous les symboles exportés par une bibliothèque, utilisez le caractère générique (*).
import library.*
Les objets ne peuvent pas être transférés d’un moteur à un autre. Vous ne pouvez pas récupérer ou
stocker des objets, ni appeler des fonctions avec des objets pour arguments. Vous pouvez toutefois
utiliser la fonction Javascript toSource pour sérialiser des objets en chaînes avant de les transmettre.
Utilisez ensuite la fonction JavaScript eval pour reconstruire l’objet à partir de la chaîne.
72
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
La fonction ci-dessous, par exemple, prend comme argument une chaîne sérialisée et reconstruit un objet
à partir de cette chaîne.
function myFn (serialized) {
var obj = eval (serialized);
// continue working…
}
En appelant la fonction, vous « déconstruisez » l’objet que vous souhaitez transmettre en chaîne sérialisée.
myFn (myObject.toSource()); // pass a serialized object
Surcharge d’opérateurs
ExtendScript vous permet d’étendre ou de remplacer le comportement d’un opérateur mathématique ou
booléen pour une classe spécifique en définissant une méthode dans cette classe portant le même nom
que l’opérateur. Le code ci-dessous, par exemple, définit l’opérateur d’addition (+) pour la classe MyClass.
Dans ce cas, l’opérateur d’addition ajoute simplement l’opérande à la valeur de la propriété.
// define the constructor method
function MyClass (initalValue) {
this.value = initialValue;
}
// define the addition operator
MyClass.prototype ["+"] = function (operand) {
return this.value + operand;
}
Le code ci-dessous vous permet d’effectuer l’addition « + » avec n’importe quel objet de cette classe.
var obj = new MyClass (5);
Result: [object Object]
obj + 10;
Result: 15
Vous pouvez remplacer les opérateurs ci-dessous.
Unaire
+, ~
Binaire
+, *, /, %, ^
<, <=, ==
<<, >>, >>>
&, |, ===


Les opérateurs > et >= sont implémentés en exécutant l’opérateur NOT <= et l’opérateur NOT <.
Les combinaisons d’opérateurs d’assignation telles que *= ne sont pas prises en charge.
Toute implémentation de surcharge d’opérateurs doit renvoyer le résultat de l’opération. Pour effectuer
l’opération par défaut, renvoyez undefined .
Les fonctions des opérateurs unaires travaillent sur l’objet this, alors que celles des opérateurs binaires
travaillent sur l’objet this ainsi que sur le premier argument. Les opérateurs + et - ont à la fois des
implémentations unaires et binaires. Si le premier argument n’est pas défini, l’opérateur est unaire. S’il est
fourni, l’opérateur est binaire.
Pour les opérateurs binaires, un second argument indique l’ordre des opérandes. Pour les opérateurs non
commutatifs, implémentez les deux variantes d’ordre dans votre fonction ou renvoyez undefined pour
les combinaisons que vous ne prenez pas en charge. Par exemple :
this ["/"] = function (operand, rev) {
if (rev) {
// do not resolve operand / this
return;
} else {
// resolve this / operand
return this.value / operand;
}
}
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
73
Indicateurs d’application et d’espace de noms
Toute forme de communication entre applications utilise des indicateurs d’application pour identifier les
applications Adobe.



Dans tous les scripts ExtendScript, la directive #target peut utiliser un indicateur pour identifier
l’application chargée d’exécuter le script. Reportez-vous à la section « Directives de prétraitement ».
Dans les messages entre applications, l’indicateur est utilisé comme valeur pour la propriété target
de l’objet du message, afin d’identifier l’application cible devant recevoir le message.
L’application Bridge (intégrée aux applications Adobe Creative Suite 2, CS2) utilise un indicateur
d’application comme valeur de propriété document.owner, afin d’identifier une autre application
CS2 à l’origine de la création ou de l’ouverture de la fenêtre de l’explorateur Bridge. Pour plus de
détails, reportez-vous au Guide de référence JavaScript Bridge, disponible avec CS2.
Lorsque le script d’une application appelle des fonctions exportées ou Cross-DOM, il identifie l’application
à l’origine de l’exportation en utilisant des indicateurs d’espace de noms.
Indicateurs d’application
Les indicateurs d’application sont des chaînes qui codent le nom de l’application, un numéro de version et
un code de langue. Ils se présentent comme suit :
appname[-version[-locale]]
appname
Nom d’une application Adobe. Choisissez :
acrobat
aftereffects
atmosphere
audition
bridge
encore
golive
illustrator
incopy
indesign
photoshop
premiere
version
Facultatif. Nombre indiquant au moins une version principale. S’il n’est pas spécifié,
le numéro de version le plus récent est pris en compte. Le numéro peut comprendre
un numéro de version secondaire séparé du numéro de version principale par un
point. Exemple : 1.5.
locale
Facultatif. Code de langue Adobe, constitué d’un code de langue ISO-639 à deux
lettres et d’un code de région ISO 3166 à deux lettres (facultatif), séparé du code de
langue par un trait de soulignement. La casse doit être respectée. Exemple :
en _ US, en _ UK, ja _ JP, de _ DE, fr _ FR.
S’il n’est pas fourni, ExtendScript utilise la langue de la plate-forme en cours.
Ne spécifiez pas de langue dans le cas d’une application multilingue, telle que
Bridge, qui possède toutes les langues au sein d’une installation unique.
Les exemples ci-dessous sont des exemples d’indicateurs autorisés.
photoshop
bridge-1
bridge-1.0
illustrator-12,2
bridge-1-en_us
golive-8-de_de
74
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Indicateurs d’espace de noms
Lorsque vous appelez des fonctions exportées et cross-DOM à partir d’autres applications, un
identificateur d’espace de noms qualifie l’appel de fonction en l’acheminant vers l’application appropriée.
Les indicateurs d’espace de noms se composent d’un nom d’application, comme celui de l’identificateur
d’application et d’un numéro de version principale. Placez-le en tant que préfixe de nom de fonction
exportée, et faites-le suivre du point de syntaxe JavaScript.
appname[majorVersion].functionName(args)
Par exemple :


Pour appeler la fonction cross-DOM quit dans Photoshop CS2, utilisez photoshop.quit(), et pour
l’appeler dans GoLive CS2, utilisez golive.quit().
Pour appeler la fonction exportée place, définie pour Illustrator® CS version 12, appelez
illustrator12.place(myFiles).
Pour plus de détails sur les fonctions exportées et cross-DOM, reportez-vous au Guide de référence
JavaScript Bridge, disponible avec Adobe Creative Suite 2.
Emplacements des scripts et vérification de l’installation de
l’application
Au démarrage, les applications Adobe Creative Suite 2 exécutent tous les fichiers JSX qui se trouvent dans
le dossier de démarrage de l’utilisateur :

Le dossier de démarrage Windows est :
%APPDATA%\Adobe\StartupScripts

Le dossier de démarrage Mac OS est :
~/Library/Application Support/Adobe/StartupScripts/
Un script qui se trouve dans le dossier de démarrage est exécuté au démarrage par toutes les applications.
Si vous placez un script dans ce dossier, il doit contenir un code chargé de vérifier s’il est exécuté par
l’application appropriée. Pour ce faire, utilisez la propriété statique appName de la classe BridgeTalk.
Par exemple :
if( BridgeTalk.appName == "bridge" ) {
//continue executing script
}
En outre, chaque application recherche des scripts spécifiques aux applications dans des sous-dossiers
portant le nom de l’indicateur et le numéro de version de l’application. Le chemin se présente comme
suit :
%APPDATA%\Adobe\StartupScripts\appname\version
~/Library/Application Support/Adobe/StartupScripts/appname/version/
Le nom et le numéro de version dans ces noms de dossier sont spécifiés selon le format requis pour les
indicateurs d’application. Par exemple, sous Windows, GoLive CS2 version 8.2 recherche des scripts dans
le dossier :
%APPDATA%\Adobe\StartupScripts\golive\8.2
La partie version du chemin d’accès au dossier spécifique Bridge est constituée d’un numéro de
version exact. Par exemple, les scripts du dossier bridge/1.5 sont exécutés uniquement par Bridge
version 1.5, etc.
Adobe InDesign CS2 Guide des scripts
Utilisation des fonctions et outils ExtendScript
Pour qu’un script exécuté par une application communique avec une autre application ou pour qu’il
ajoute une fonctionnalité dépendant d’une autre application, ce script doit tout d’abord vérifier
que la version de l’application est installée. Pour ce faire, utilisez la fonction statique BridgeTalk.
getSpecifier. Par exemple :
if( BridgeTalk.appName == "bridge" ) {
// Check that PS CS2 is installed
if( BridgeTalk.getSpecifier("photoshop",9)){
// add PS automate menu to Bridge UI
}
}
Pour plus de détails sur la communication entre applications, reportez-vous au Guide de référence
JavaScript Bridge, disponible avec Adobe Creative Suite 2.
75
76
Utilisation des fonctions et outils ExtendScript
Adobe InDesign CS2 Guide des scripts
Adobe InDesign CS2 Guide des scripts
5
Utilisation de documents dans AppleScript
Utilisation de documents dans AppleScript
La plupart des tâches que vous effectuez dans InDesign concernent des documents : création,
enregistrement, insertion d’éléments de page, de couleurs, de styles et de textes. Les documents sont
également nécessaires au script InDesign, et presque chaque tâche associée à un document peut être
automatisée par le biais d’un script.
Dans ce chapitre, vous apprendrez à :


Effectuer les tâches élémentaires de gestion de documents, parmi lesquelles

Créer un document

Ouvrir un document

Fermer un document

Enregistrer un document
Effectuer les tâches élémentaires de mise en page, notamment :

Définir le format de page et la longueur du document

Définir le fond perdu et la ligne-bloc

Déterminer les colonnes et les marges

Changer l’aspect de la table de montage

Utiliser les repères et les grilles

Changer les unités de mesure et le point d’origine de la règle

Déterminer et appliquer les paramètres prédéfinis de document

Définir les pages types (les doubles pages types)

Définir les paramètres de mise en forme de texte par défaut

Ajouter des métadonnées XMP (informations sur un fichier)

Créer un modèle de document

Imprimer un document

Exporter un document au format PDF

Exporter des pages d’un document au format EPS
Remarque : si ce n’est déjà fait, consultez le chapitre 3, « Initiation aux scripts InDesign » et apprenez à
créer un script avant de continuer.
77
78
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
Notions de base de la gestion de documents
Dans la plupart des situations, votre script doit soit ouvrir soit créer un document, l’enregistrer, puis le fermer.
Création d’un document
Si vous n’avez pas de document existant, vous devez en créer un. Pour créer un document :
--MakeDocument.as
--AppleScript InDesign CS2
--Crée un document.
tell application "Adobe InDesign CS2"
set myDocument to make document
end tell
Vous pouvez spécifier un paramètre prédéfini lorsque vous créez un document :
--MakeDocumentWithPreset.as
--AppleScript InDesign CS2
--Crée un document en utilisant le paramètre prédéfini du document en question.
--Remplacez "myDocumentPreset" dans la ligne ci-dessous avec le nom
--du paramètre prédéfini du document que vous souhaitez utiliser.
tell application "Adobe InDesign CS2"
set myDocument to make document with properties
¬
{document preset:"myDocumentPreset"}
end tell
Lorsque vous créez un document, vous pouvez l’ouvrir en mode masqué plutôt que de l’afficher dans une
fenêtre :
--MakeDocumentWithParameters.as
--MakeDocumentWithParameters.as
--AppleScript InDesign CS2
--Crée un document sans afficher sa fenêtre.
--Le paramètre "showing window" permet de contrôler la visibilité du document.
--Les documents masqués ne sont pas réduits, et ne s’affichent que lorsque
--vous indiquez au document de créer une fenêtre.
tell application "Adobe InDesign CS2"
set myDocument to make document with properties {showing window:false}
--Pour afficher la fenêtre :
--tell myDocument
--set myWindow to make window
--end tell
end tell
Ouverture d’un document
L’exemple de script ci-dessous indique comment ouvrir un document existant. Définissez le paramètre
showing window sur false (la valeur par défaut est true) dans la commande Open pour masquer le
document. Ceci peut vous permettre d’améliorer les performances d’un script. Pour afficher un document
masqué, créez une fenêtre, comme indiqué dans le script suivant :
--OpenFile.as
--AppleScript InDesign CS2
--Ouvre le fichier spécifié.
tell application "Adobe InDesign CS2"
--Vous pouvez ouvrir des fichiers à l’aide du paramètre "showing window"
--sans les afficher. Ceci peut accélérer le nombre d’opérations de script
--et permettre à un script d’agir
--sur un fichier en arrière-plan. Pour afficher un document que vous avez
--ouvert de cette manière, indiquez au document de créer une fenêtre.
--Vous devez spécifier le chemin de votre fichier.
set myDocument to open "yukino:myTestDocument.indd" without showing window
--A ce stade, votre script pourrait modifier ou extraire des informations
--du document masqué.
tell myDocument to make window
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
79
Fermeture d’un document
La commande close permet de fermer un document :
--CloseDocument.as
--AppleScript InDesign CS2
--Ferme un document.
tell application "Adobe InDesign CS2"
close document 1
--document 1 fait toujours référence au document au premier plan.
--Notez que vous pouvez également utiliser :
--close active document
end tell
La commande Close peut accepter deux paramètres facultatifs :
--CloseWithParameters.as
--AppleScript InDesign CS2
--Utilisez les options SaveOptions.yes pour enregistrer le document, SaveOptions.no pour fermer
le document
--sans l’enregistrer ou SaveOptions.ask pour afficher une invite. Si vous utilisez
--SaveOptions.yes,
--vous devrez faire référence à un fichier vers lequel enregistrer dans le second
--paramètre (saving in).
tell application "Adobe InDesign CS2"
--Si le fichier n’a jamais été enregistré (un fichier sans nom), affichez une invite.
if saved of active document is not equal to true then
close active document saving ask
--Ou, pour enregistrer sous un nom de fichier particulier (vous devrez indiquer le chemin),
entrez :
--set myFile to "yukino:myTestDocument.indd"
--close active document saving yes saving in myFile
else
--Si le fichier a déjà été enregistré dans un fichier, enregistrez-le.
close active document saving yes
end if
end tell
Cet exemple ferme tous les documents ouverts sans les enregistrer :
--CloseAll.as
--AppleScript InDesign CS2
--Ferme tous les documents sans les enregistrer.
tell application "Adobe InDesign CS2"
tell documents to close without saving
end tell
Enregistrement d’un document
Dans l’interface utilisateur d’InDesign, la commande Enregistrer du menu Fichier permet d’enregistrer
un fichier, l’option Enregistrer sous permet d’enregistrer un fichier sous un nom différent. Dans le script
InDesign, la commande save permet d’effectuer les deux opérations :
--SaveDocument.as
--AppleScript InDesign CS2
--Enregistre le document actif.
--Si le document actif a subi des modifications depuis le dernier enregistrement, enregistrezle.
tell application "Adobe InDesign CS2"
if modified of active document is true then
tell active document to save
end if
end tell
La commande save propose deux options : la première (to) détermine le fichier vers lequel le fichier
actuel doit être enregistré ; la seconde (stationery) peut être définie sur true pour enregistrer le
document en tant que modèle :
--SaveDocumentAs.as
--AppleScript InDesign CS2
--Si le document actif n’a pas encore été enregistré (s’il s’agit du premier enregistrement),
80
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
enregistrez-le.
tell application "Adobe InDesign CS2"
if saved of active document is false then
--Si vous n’indiquez pas un nom de fichier, InDesign affichera la boîte de
dialogue Enregistrer.
tell active document to save saving in "yukino:myTestDocument.indd"
end if
end tell
L’exemple suivant permet d’enregistrer un document en tant que modèle :
--SaveAsTemplate.as
--AppleScript InDesign CS2
--Enregistrer le document actif en tant que modèle.
tell application "Adobe InDesign CS2"
set myDocument to active document
tell myDocument
if saved is true then
--Convertir le nom de fichier en une chaîne de caractères.
set myFileName to full name
set myFileName to my myReplace(myFileName, ".indd", ".indt")
else
--Si le document n’a pas été enregistré, indiquez un
--nom/chemin par défaut. Vous devez indiquer le chemin du fichier.
set myFileName to "yukino:myTestDocument.indt"
end if
save to myFileName with stationery
end tell
end tell
on myReplace(myString, myFindString, myChangeString)
set AppleScript’s text item delimiters to myFindString
set myTextList to every text item of (myString as text)
set AppleScript’s text item delimiters to myChangeString
set myString to myTextList as string
set AppleScript’s text item delimiters to ""
return myString
end myReplace
Notions de base de la mise en page
Chaque document comprend un format de page, un nombre de pages attribué, des zones de fond perdu
et de ligne-bloc, des colonnes et des marges qui définissent la zone de placement des éléments.
Définition du format de page et de la longueur du document
Lorsque vous créez un document dans l’interface utilisateur d’InDesign, vous pouvez spécifier le format
et l’orientation de la page, le nombre de pages et l’utilisation éventuelle de pages en vis-à-vis. Pour créer
un document à l’aide d’un script InDesign, vous utilisez la commande make document, qui ne spécifie
pas ces paramètres. Une fois le document créé, vous pouvez contrôler ces paramètres grâce à l’objet
document preferences :
--DocumentPreferences.as
--AppleScript InDesign CS2
--Définit la hauteur, la largeur et l’orientation d’un document.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell document preferences of myDocument
set page height to "800pt"
set page width to "600pt"
set page orientation to landscape
set pages per document to 16
end tell
end tell
Remarque : l’objet application contient également un objet document preference. Vous pouvez
déterminer les valeurs par défaut de l’application pour la hauteur et la largeur de page, ainsi
que d’autres propriétés en modifiant les propriétés de cet objet.
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
81
Définition du fond perdu et de la ligne-bloc
Dans InDesign, le fond perdu et la ligne-bloc sont des zones en-dehors des marges qui peuvent être
imprimées ou comprises dans un document PDF exporté. De manière générale, ces zones sont utilisées
pour les objets qui s’étendent au-delà des bords de page (fond perdu) et des informations sur le
document/travail (ligne-bloc). Les deux zones peuvent être imprimées et exportées indépendamment
l’une de l’autre. Par exemple, vous pouvez choisir d’ignorer les informations sur la ligne-bloc pour
l’impression finale d’un document. Le script suivant détermine le fond perdu et la ligne-bloc pour un
nouveau document :
--BleedAndSlug.as
--AppleScript InDesign CS2
Indique comment définir les zones de fond perdu et de ligne-bloc d’un document.
tell application "Adobe InDesign CS2"
--Créer un document.
set myDocument to make document
--Les propriétés de fond perdu et de ligne-bloc appartiennent à l’objet document preferences.
tell document preferences of myDocument
--Fond perdu
set document bleed bottom offset to "3p"
set document bleed top offset to "3p"
set document bleed inside or left offset to "3p"
set document bleed outside or right offset to "3p"
--Ligne-bloc
set slug bottom offset to "18p"
set slug top offset to "3p"
set slug inside or left offset to "3p"
set slug right or outside offset to "3p"
end tell
end tell
Si toutes les valeurs du fond perdu sont égales, comme dans l’exemple précédent, vous pouvez
également utiliser la propriété document bleed uniform size :
--UniformBleed.as
--AppleScript InDesign CS2
--Indique comment utiliser les propriétés de taille uniforme du fond perdu du document.
tell application "Adobe InDesign CS2"
--Créer un document.
set myDocument to make document
--Les propriétés de fond perdu appartiennent à l’objet document preferences.
tell document preferences of myDocument
--Fond perdu
set document bleed top offset to "3p"
set document bleed uniform size to true
end tell
end tell
Si toutes les valeurs de la ligne-bloc sont égales, vous pouvez utiliser la propriété document slug
uniform size :
--UniformSlug.as
--AppleScript InDesign CS2
--Indique comment utiliser la propriété de taille uniforme de la ligne-bloc du document.
--Créer un document.
tell application "Adobe InDesign CS2"
--Créer un document.
set myDocument to make document
--Les propriétés de fond perdu appartiennent à l’objet document preferences.
tell document preferences of myDocument
--Ligne-bloc
set document slug uniform size to true
set slug top offset to "3p"
end tell
end tell
Vous pouvez non seulement déterminer la largeur et la hauteur des zones de fond perdu et de ligne-bloc,
mais également la couleur des repères délimitant ces zones. Cette propriété ne se trouve pas dans l’objet
document preferences, mais dans l’objet pasteboard preferences :
--BleedSlugGuideColors.as
82
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
--AppleScript InDesign CS2
--Indique comment utiliser les couleurs pour afficher les zones de fond perdu et de ligne-bloc.
tell application "Adobe InDesign CS2"
--Suppose que vous disposez d’un document ouvert.
tell pasteboard preferences of active document
--Tous les repères InDesign peuvent utiliser les constantes de couleurs UI...
set bleed guide color to cute teal
set slug guide color to charcoal
--...ou vous pouvez indiquer une liste de valeurs RVB (de 0 à 255).
set bleed guide color to {0, 198, 192}
set slug guide color to {192, 192, 192}
end tell
end tell
Configuration des marges et des colonnes
Dans un document, chaque page peut être configurée différemment en termes de marges et de colonnes.
Avec le script InDesign, ces propriétés font partie de l’objet margin preferences pour chaque page.
A titre d’exemple, ce script crée un document, puis définit les marges et les colonnes pour toutes les pages
de la planche type :
--PageMargins.as
--AppleScript InDesign CS2
--Indique comment définir les marges d’un nouveau document.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell view preferences of myDocument
set horizontal measurement units to points
set vertical measurement units to points
end tell
tell master spread 1 of myDocument
tell margin preferences of pages
set top to 36
set left to 36
set bottom to 48
set right to 36
end tell
end tell
end tell
Pour définir les marges d’une page individuelle, utilisez les préférences de marges pour cette page,
comme indiqué dans l’exemple ci-dessous :
--PageMarginsForOnePage.as
--AppleScript InDesign CS2
--Indique comment définir les marges d’une seule page dans un nouveau document.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell view preferences of myDocument
set horizontal measurement units to points
set vertical measurement units to points
end tell
tell margin preferences of page 1 of myDocument
set top to 36
set left to 36
set bottom to 48
set right to 36
end tell
end tell
InDesign vous permet de ne pas créer de page qui soit plus petite que la somme de ses marges. La largeur
de la page doit être supérieure à la somme des marges gauche et droite, et la hauteur de page doit être
supérieure à la somme des marges de haut et de bas de page. Si vous créez des pages très petites (pour
un encart presse par exemple) dans l’interface utilisateur InDesign, entrez de nouvelles valeurs dans la
zone de texte Marges de la boîte de dialogue Nouveau document pour définir des marges correctes lors
de la création du document.
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
83
Toutefois, la solution est moins évidente avec un script. Lorsque vous créez un document, le script
utilise les préférences de marge par défaut de l’application. Ces marges sont appliquées à toutes les
pages du document, y compris aux gabarits. Les préférences de marges du document, une fois définies,
ne s’appliquent qu’aux nouvelles pages et n’ont pas d’incidence sur les pages existantes. Si vous
essayez de définir la hauteur et la largeur de page avec des valeurs inférieures à la somme des marges
correspondantes sur l’une des pages existantes, InDesign ne modifie pas le format de page.
Deux solutions s’offrent à vous. La première consiste à définir les marges des pages existantes avant de
modifier le format de page :
--PageMarginsForSmallPages.as
--AppleScript InDesign CS2
--Indique comment définir les marges d’un nouveau document pour créer un format de page très
petit.
--Si vous ne définissez pas les marges en premier, InDesign affiche un message d’erreur lorsque
--vous essayez de créer un format de page d’une hauteur inférieure à la somme
--des marges du haut et du bas, ou d’une largeur inférieure à la somme
--des marges intérieure et extérieure.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell margin preferences of page 1 of myDocument
set top to 0
set left to 0
set bottom to 0
set right to 0
end tell
tell master spread 1 of myDocument
tell margin preferences of pages
set top to 0
set left to 0
set bottom to 0
set right to 0
end tell
end tell
--A ce stade, vous pouvez définir des valeurs minimes pour la largeur et la hauteur de la
page.
--(minimum 1 x 1 pica)
set page height of document preferences of myDocument to "1p"
set page width of document preferences of myDocument to "6p"
end tell
Vous pouvez également modifier les préférences de marges par défaut de l’application avant de créer le
document :
--ApplicationPageMargins.as
--AppleScript InDesign CS2
--Indique comment définir les marges d’un nouveau document pour créer un format de page très
petit.
--Si vous ne définissez pas les marges en premier, InDesign affiche un message d’erreur lorsque
--vous essayez de créer un format de page d’une hauteur inférieure à la somme
--des marges du haut et du bas, ou d’une largeur inférieure à la somme
--des marges intérieure et extérieure.
tell application "Adobe InDesign CS2"
tell margin preferences
--Enregistrer les préférences de marges par défaut actuelles de l’application.
set myY1 to top
set myX1 to left
set myY2 to bottom
set myX2 to right
--Définir les préférences de marges par défaut de l’application.
set top to 0
set left to 0
set bottom to 0
set right to 0
end tell
--A ce stade, vous pouvez créer un document.
set myDocument to make document
--A ce stade, vous pouvez définir des valeurs minimes pour la largeur et la hauteur de la
page.
--(minimum 1 x 1 pica)
set page height of document preferences of myDocument to "1p"
84
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set page width of document preferences of myDocument to "1p"
--Rétablir les préférences de marges par défaut de l’application à leur état antérieur.
tell margin preferences
set top to myY1
set left to myX1
set bottom to myY2
set right to myX2
end tell
end tell
Modification de l’aspect de la table de montage
La table de montage est une zone qui encadre les pages InDesign. Vous pouvez y stocker temporairement
des éléments de la page. Il est possible de modifier la taille et la couleur de la table de montage à l’aide
d’un script. La propriété pasteboard color permet de contrôler la couleur de la table de montage
en mode Normal ; la propriété preview background color définit la couleur de la table de montage en
mode Aperçu :
--PasteboardPreferences.as
--AppleScript InDesign CS2
--Créer un document et modifier la taille de la table de montage.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell pasteboard preferences of myDocument
--Vous pouvez utiliser soit un nombre soit des mesures pour définir
--l’espace au-dessus/en dessous.
set minimum space above and below to "12p"
--Il est possible d’attribuer à la table de montage l’une des constantes de couleurs UI
prédéfinies...
set pasteboard color to white
set preview background color to gray
--...ou un ensemble de valeurs RVB (de 0 à 255).
--set pasteboard Color to {0, 0, 0}
--set preview Background Color to {192, 192, 192}
end tell
end tell
Utilisation des repères et des grilles
Les repères et les grilles facilitent le positionnement des objets sur les pages de votre document.
Définition des repères
InDesign propose des repères pour vous aider à positionner les objets sur les pages de votre document.
Exemple d’utilisation des repères :
--Guides.as
--AppleScript InDesign CS2
--Crée une série de repères à titre d’exemple.
tell application "Adobe InDesign CS2"
set myDocument to make document
set myPageWidth to page width of document preferences of myDocument
set myPageHeight to page height of document preferences of myDocument
tell page 1 of myDocument
set myMarginPreferences to margin preferences
--Placer des repères sur les marges de la page.
make guide with properties {orientation:vertical,
¬
location:left of myMarginPreferences}
make guide with properties {orientation:vertical,
¬
location:(myPageWidth - (right of myMarginPreferences))}
make guide with properties {orientation:horizontal,
¬
location:top of myMarginPreferences}
make guide with properties {orientation:horizontal,
¬
location:(myPageHeight - (bottom of myMarginPreferences))}
--Placer un repère vertical au centre de la page.
make guide with properties {orientation:vertical, location:(myPageWidth / 2)}
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
85
--Placer un repère horizontal au centre de la page.
make guide with properties {orientation:horizontal, location:(myPageHeight / 2)}
end tell
end tell
Les repères horizontaux peuvent se limiter à une page donnée, ou s’étendre sur toutes les pages d’une
planche. A l’aide d’un script InDesign, vous pouvez contrôler cette possibilité grâce à la propriété fit to
page (les repères verticaux ignorent cette propriété).
Vous pouvez utiliser un script pour modifier le calque, la couleur et la visibilité des repères, tout comme
vous pouvez le faire à partir de l’interface utilisateur :
--GuideOptions.as
--AppleScript InDesign CS2
--Indique comment définir les options de repères.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell myDocument
--Créer un calque nommé "guide layer".
set myLayer to make layer with properties {name:"guide layer"}
--Ajouter une série de repères à la page 1.
tell page 1
--Créer un repère sur le calque créé précédemment.
make guide with properties {orientation:horizontal, location:"12p",
¬
item layer:myLayer}
make guide with properties {item layer:myLayer,
¬
orientation:horizontal, location:"14p"}
--Créer un repère verrouillé.
make guide with properties {locked:true,
¬
orientation:horizontal, location:"16p"}
--Définir le seuil d’affichage d’un repère.
make guide with properties {view threshold:100,
¬
orientation:horizontal, location:"18p"}
--Déterminer la couleur d’un repère à l’aide d’une constante de couleurs UI.
make guide with properties {guide color:gray,
¬
orientation:horizontal, location:"20p"}
--Déterminer la couleur d’un repère à l’aide d’un ensemble de valeurs RVB.
make guide with properties {guide color:{192, 192, 192},
¬
orientation:horizontal, location:"22p"}
end tell
end tell
end tell
Il est également possible de créer des repères à l’aide de la commande create guides des planches et des
planches types :
--CreateGuidesCommand.as
--AppleScript InDesign CS2
--Ajouter une série de repères à l’aide de la commande de création de repères.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell spread 1 of myDocument
--Paramètres (tous facultatifs) : row count, column count, row gutter, column gutter
(compte de ligne, compte de colonne, gouttière de ligne, gouttière de colonne),
--guide color, fit margins, remove existing, layer (couleur de repère, marges ajustées,
suppression, calque).
--Notez que cette méthode de création de repères n’accepte pas de valeurs RVB
--pour le paramètre de couleur de repère.
create guides number of rows 4 number of columns 4 row gutter "1p"
¬
column gutter "1p" guide color gray with fit margins and remove existing
end tell
end tell
Configuration des préférences de grille
Pour contrôler les propriétés du document et de la grille de ligne de base, définissez les propriétés de
l’objet grid preferences comme dans le script ci-dessous :
--DocumentAndBaselineGrid.as
--AppleScript InDesign CS2
86
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
--Définit les préférences de la grille de document et de la grille de ligne de base dans un
nouveau document.
tell application "Adobe InDesign CS2"
set myDocument to make document
set horizontal measurement units of view preferences of myDocument to points
set vertical measurement units of view preferences of myDocument to points
tell grid preferences of myDocument
set baseline start to 56
set baseline division to 14
set baseline grid shown to true
set horizontal gridline division to 14
set horizontal grid subdivision to 5
set vertical gridline division to 14
set vertical grid subdivision to 5
set document grid shown to true
end tell
end tell
Magnétisme des repères et des grilles
La totalité des paramètres de magnétisme des grilles et des repères d’un document se trouve dans les
propriétés des objets guide preferences et grid preferences. Voici un exemple :
--GuideGridPreferences.js
--AppleScript InDesign CS2
--Active les paramètres de magnétisme (snap) d’un document.
--Suppose que vous disposez d’un document ouvert.
tell application "Adobe InDesign CS2"
set myDocument to active document
tell guide preferences of myDocument
set guides in back to true
set guides locked to false
set guides shown to true
set guides snapto to true
end tell
tell grid preferences of myDocument
set document grid shown to false
set document grid snapto to true
--Magnétisme de la grille de ligne de base actif pour les objets lorsque guidePreferences.
guideSnapTo
--est défini sur true.
set baseline grid shown to true
end tell
end tell
Modification des unités de mesure et de la règle
Les exemples de scripts donnés jusqu’à présent faisaient appel à des chaînes de mesures, c’est à dire des
chaînes forçant InDesign à utiliser une unité de mesure spécifique, « 8,5 p » par exemple, pour 8,5 pouces.
Vous pourriez en effet utiliser un système de mesure différent lors de l’exécution du script.
Pour déterminer l’unité de mesure d’un script, utilisez l’objet view preferences du document :
--ViewPreferences.as
--AppleScript InDesign CS2
--Définit les unités de mesure en points.
--Suppose que vous disposez d’un document ouvert.
tell application "Adobe InDesign CS2"
set myDocument to active document
tell view preferences of myDocument
--Les différentes unités de mesure possibles sont les suivantes :
--picas, points, pouces, pouces décimaux, millimètres, centimètres ou cicéros.
--Définir les unités de mesure verticales et horizontales en points.
set horizontal measurement units to points
set vertical measurement units to points
end tell
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
87
Si vous écrivez un script qui requiert un système de mesure particulier, vous pouvez modifier les unités
de mesure au début du script, puis rétablir celles d’origine à la fin de celui-ci, comme dans l’exemple cidessous :
--ResetMeasurementUnits.as
--AppleScript InDesign CS2
--Définit les unités de mesure, exécute certaines actions, puis
--rétablit les unités de mesure d’origine.
--Suppose que vous disposez d’un document ouvert.
tell application "Adobe InDesign CS2"
set myDocument to active document
tell view preferences of myDocument
set myOldXUnits to horizontal measurement units
set myOldYUnits to vertical measurement units
set horizontal measurement units to points
set vertical measurement units to points
end tell
--A ce stade, vous pouvez exécuter une série quelconque d’actions de script dépendant des
--unités de mesure que vous avez définies. A la fin du script, rétablissez
--les unités de mesure à leur état d’origine.
tell view preferences of myDocument
set horizontal measurement units to myOldXUnits
set vertical measurement units to myOldYUnits
end tell
end tell
Définition et application des paramètres prédéfinis de document
Les paramètres prédéfinis de documents InDesign vous permettent de stocker et d’appliquer des
paramètres de configuration de document que vous utilisez souvent (format de page, marges, colonnes,
et zones de fond perdu et de ligne-bloc). Lorsque vous créez un document, vous pouvez baser celui-ci sur
un paramètre prédéfini de document.
Création d’un paramètre prédéfini par copie de valeurs
Pour créer un paramètre prédéfini de document à partir des paramètres d’un document existant, ouvrez
le document dont vous souhaitez copier les propriétés de configuration pour votre paramètre prédéfini,
puis exécutez le script suivant :
--DocumentPresetByExample.as
--AppleScript InDesign CS2
--Crée un paramètre prédéfini de document d’après la configuration du document actif.
tell application "Adobe InDesign CS2"
if (count documents) > 0 then
set myDocument to active document
--Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
try
set myDocumentPreset to document preset "myDocumentPreset"
on error
set myDocumentPreset to make document preset with ¬
properties {name:"myDocumentPreset"}
end try
--Compléter les propriétés du paramètre prédéfini de document avec
--les propriétés correspondantes du document actif.
tell myDocumentPreset
--Notez que le script suivant applique les préférences de marges
--du document ; pour appliquer les préférences de marges de la page active,
--remplacez "myDocument" par "active page of active window" dans la
--ligne suivante (en supposant que la fenêtre active est une fenêtre de mise en page) :
set myMarginPreferences to margin preferences of myDocument
set left to left of myMarginPreferences
set right to right of myMarginPreferences
set top to top of myMarginPreferences
set bottom to bottom of myMarginPreferences
set column count to column count of myMarginPreferences
set column gutter to column gutter of myMarginPreferences
88
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set document bleed bottom offset to document bleed bottom offset
¬
of document preferences of myDocument
set document bleed top offset to document bleed top offset
¬
of document preferences of myDocument
set document bleed inside or left offset to document bleed inside
¬
or left offset of document preferences of myDocument
set document bleed outside or right offset to document bleed outside ¬
or right offset of document preferences of myDocument
set facing pages to facing pages of document preferences of myDocument
set page height to page height of document preferences of myDocument
set page width to page width of document preferences of myDocument
set page orientation to page orientation of document preferences ¬
of myDocument
set pages per document to pages per document of document preferences ¬
of myDocument
set slug bottom offset to slug bottom offset of document preferences ¬
of myDocument
set slug top offset to slug top offset of document preferences of myDocument
set slug inside or left offset to slug inside or left offset ¬
of document preferences of myDocument
set slug right or outside offset to slug right or outside offset ¬
of document preferences of myDocument
end tell
end if
end tell
Création d’un paramètre prédéfini à partir de nouvelles valeurs
Pour créer un paramètre prédéfini de document avec des valeurs particulières, exécutez le script suivant :
--DocumentPreset.as
--AppleScript InDesign CS2
--Crée un paramètre prédéfini de document.
tell application "Adobe InDesign CS2"
--Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
try
set myDocumentPreset to document preset "myDocumentPreset"
on error
set myDocumentPreset to make document preset
¬
with properties {name:"myDocumentPreset"}
end try
--Compléter les propriétés du paramètre prédéfini de document.
tell myDocumentPreset
set page height to "9i"
set page width to "7i"
set left to "4p"
set right to "6p"
set top to "4p"
set bottom to "9p"
set column count to 1
set document bleed bottom offset to "3p"
set document bleed top offset to "3p"
set document bleed inside or left offset to "3p"
set document bleed outside or right offset to "3p"
set facing pages to true
set page orientation to portrait
set pages per document to 1
set slug bottom offset to "18p"
set slug top offset to "3p"
set slug inside or left offset to "3p"
set slug right or outside offset to "3p"
end tell
end tell
Utilisation d’un paramètre prédéfini
Pour créer un document à l’aide d’un paramètre prédéfini de document, utilisez le paramètre document
preset comme indiqué précédemment à la section « Création d’un nouveau document ».
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
Configuration des planches types
Après avoir défini le format de page, le fond perdu et la ligne-bloc du document de base, configurez les
planches types du document :
--MasterSpread.as
--AppleScript InDesign CS2
--Configurer la première planche type dans un nouveau document.
tell application "Adobe InDesign CS2"
set myDocument to make document
--Configurer le document.
tell document preferences of myDocument
set page height to "11i"
set page width to "8.5i"
set facing pages to true
set page orientation to portrait
end tell
--Définir le point d’origine de la règle sur la page d’origine. Ceci est très important ;---il est autrement plus difficile de placer
--correctement les objets sur la page.
set ruler origin of view preferences of myDocument to page origin
tell master spread 1 of myDocument
--Configurer la page gauche (verso).
tell margin preferences of page 1
set column count to 3
set column gutter to "1p"
set bottom to "6p"
--« left » (gauche) signifie intérieure, « right » (droite) extérieure.
set left to "6p"
set right to "4p"
set top to "4p"
end tell
--Ajouter un simple pied de page avec un numéro de section et un numéro de page.
tell page 1
set myTextFrame to make text frame
¬
with properties {geometric bounds:{"61p", "4p", "62p", "45p"}}
tell myTextFrame
set contents of insertion point 1 to section marker
set contents of insertion point 1 to Em space
set contents of insertion point 1 to auto page number
set justification of paragraph 1 to left align
end tell
end tell
--Configurer la page droite (recto).
tell margin preferences of page 2
set column count to 3
set column gutter to "1p"
set bottom to "6p"
--« left » (gauche) signifie intérieure, « right » (droite) extérieure.
set left to "6p"
set right to "4p"
set top to "4p"
end tell
--Ajouter un simple pied de page avec un numéro de section et un numéro de page.
tell page 2
set myTextFrame to make text frame
¬
with properties {geometric bounds:{"61p", "6p", "62p", "47p"}}
tell myTextFrame
set contents of insertion point 1 to auto page number
set contents of insertion point 1 to Em space
set contents of insertion point 1 to section marker
set justification of paragraph 1 to right align
end tell
end tell
end tell
end tell
Pour appliquer une planche type à une page de document, utilisez la propriété applied master de la
page du document :
--ApplyMaster.as
--AppleScript InDesign CS2
89
90
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
--Applique une planche type à une page.
--Suppose que le document actif utilise un gabarit nommé B-Master
--et au moins trois pages.
tell application "Adobe InDesign CS2"
tell active document
set applied master of page 2 to master spread "B-Master"
end tell
end tell
Utilisez la même propriété pour appliquer une planche type à une page de planche type :
--ApplyMasterToMaster.as
--AppleScript InDesign CS2
--Applique une planche type à un gabarit.
--Suppose que le document actif utilise une planche type nommée B-Master
--différente de la première planche type du document.
tell application "Adobe InDesign CS2"
tell active document
set applied master of page 2 of master spread 1 to master spread "B-Master"
end tell
end tell
Définition des paramètres par défaut de mise en forme de texte
Vous pouvez définir les attributs par défaut de mise en forme de texte pour votre application ou pour
les documents individuels. Si vous définissez les paramètres par défaut de mise en forme de texte pour
l’application, ceux-ci s’appliquent à tous les nouveaux documents ; les documents existants ne changent
pas. Si vous définissez les paramètres par défaut de mise en forme de texte pour un document, ceux-ci
s’appliquent à tout nouveau texte que vous insérez dans le document ; le texte existant ne change pas.
Définition des paramètres de texte par défaut de l’application
Pour définir les paramètres de mise en forme de texte par défaut pour votre application :
--ApplicationTextDefaults.as
--AppleScript InDesign CS2
--Détermine les paramètres de texte par défaut de l’application, qui s’appliquent à tous
--les nouveaux documents. Les documents existants ne changent pas. Notez que toutes
--ces propriétés pourraient être définies à l’aide d’une seule instruction "with properties",
mais
--elles sont présentées ici dans des instructions séparées par souci de clarté.
tell application "Adobe InDesign CS2"
set myBlackSwatch to color "Black"
set myNoneSwatch to swatch "None"
tell text defaults
set align to baseline to true
try
set applied font to font "Minion Pro"
end try
try
set font style to "Regular"
end try
try
set applied language to "English: USA"
end try
set auto leading to 100
set balance ragged lines to false
set baseline shift to 0
set capitalization to normal
set composer to "Adobe Paragraph Composer"
set desired glyph scaling to 100
set desired letter spacing to 0
set desired word spacing to 100
set drop cap characters to 0
if drop cap characters is not equal to 0 then
set drop cap lines to 3
--Suppose que l’application utilise un style de caractère par défaut
--nommé "myDropCap"
Adobe InDesign CS2 Guide des scripts
set drop cap style to character style "myDropCap"
end if
set fill color to myBlackSwatch
set fill tint to 100
set first line indent to "14pt"
set gradient fill angle to 0
set gradient fill length to 0
set grid align first line only to false
set horizontal scale to 100
set hyphenation to true
set hyphenate after first to 3
set hyphenate before last to 4
set hyphenate capitalized words to false
set hyphenate ladder limit to 1
set hyphenate words longer than to 5
set hyphenation zone to "3p"
set hyphen weight to 9
set justification to left align
set keep all lines together to false
set keep lines together to true
set keep first lines to 2
set keep last lines to 2
set keep with next to 0
set kerning method to "Optical"
set leading to 14
set left indent to 0
set ligatures to true
set maximum glyph scaling to 100
set maximum letter spacing to 0
set maximum word spacing to 160
set minimum glyph scaling to 100
set minimum letter spacing to 0
set minimum word spacing to 80
set no break to false
set OTF contextual alternate to true
set OTF discretionary ligature to true
set OTF figure style to proportional oldstyle
set OTF fraction to true
set OTF ordinal to false
set OTF slashed zero to false
set OTF swash to false
set OTF titling to false
set overprint fill to false
set overprint stroke to false
set point size to 11
set position to normal
set right indent to 0
set rule above to false
if rule above is true then
set rule above color to myBlackSwatch
set rule above gap color to myNoneSwatch
set rule above gap overprint to false
set rule above gap tint to 100
set rule above left indent to 0
set rule above line weight to 0,25
set rule above offset to 14
set rule above overprint to false
set rule above right indent to 0
set rule above tint to 100
set rule above type to stroke style "Solid"
set rule above width to column width
end if
set rule below to false
if rule below is true then
set rule below color to color myBlackSwatch
set rule below gap color to myNoneSwatch
set rule below gap overPrint to false
set rule below gap tint to 100
set rule below left indent to 0
set rule below line weight to 0,25
set rule below offset to 14
set rule below overPrint to false
set rule below right indent to 0
Utilisation de documents dans AppleScript
91
92
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set rule below tint to 100
set rule below type to stroke style "Solid"
set rule below width to column width
end if
set single word justification to left align
set skew to 0
set space after to 0
set space before to 0
set start paragraph to anywhere
set strike thru to false
if strike thru is true then
set strike through color to color myBlackSwatch
set strike through gap color to myNoneSwatch
set strike through gap overprint to false
set strike through gap tint to 100
set strike through offset to 3
set strike through overprint to false
set strike through tint to 100
set strike through type to stroke style "Solid"
set strike through weight to 0,25
end if
set stroke color to myNoneSwatch
set stroke tint to 100
set stroke weight to 0
set tracking to 0
set underline to false
if underline is true then
set underline color to color myBlackSwatch
set underline gap color to myNoneSwatch
set underline gap overprint to false
set underline gap tint to 100
set underline offset to 3
set underline overprint to false
set underline tint to 100
set underline type to stroke style "Solid"
set underline weight to 0,25
end if
set vertical scale to 100
end tell
end tell
Configuration des paramètres par défaut du document actif
Pour définir les paramètres de texte par défaut pour le document actif, remplacez la ligne suivante dans
l’exemple donné précédemment :
tell text defaults
par :
tell text defaults of active document
Utilisation des paramètres de texte par défaut
Pour appliquer un style de caractère ou de paragraphe par défaut à du texte dans un document, utilisez le
script suivant :
--SetTextDefaultToStyle.as
--AppleScript InDesign CS2
Définit le style de paragraphe par défaut pour le texte de tous les nouveaux documents.
--Suppose l’existence d’un style de paragraphe par défaut nommé "BodyText" dans l’application.
tell application "Adobe InDesign CS2"
tell text defaults
set applied paragraph style to paragraph style "BodyText"
end tell
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
93
Ajout de métadonnées XMP
Les métadonnées sont des informations qui permettent de décrire le contenu, l’origine ainsi que d’autres
attributs d’un fichier. Dans l’interface utilisateur d’InDesign, vous pouvez saisir, modifier ou afficher des
métadonnées grâce à la boîte de dialogue Informations (Fichier > Informations). Ces métadonnées
comprennent l’auteur, l’état du copyright et les dates de création et de modification du document, ainsi
que d’autres informations. Toutes ces données sont stockées au format XMP (Adobe Extensible Metadata
Platform), une norme ouverte qui permet d’incorporer des métadonnées dans un document.
Pour plus de détails sur le format XMP, consultez les spécifications XMP, à l’adresse suivante :
http://partners.adobe.com/asn/developer/pdf/MetadataFramework.pdf.
Vous pouvez également ajouter des informations XMP à un document en utilisant un script InDesign.
Toutes les propriétés XMP d’un document se trouvent dans l’objet metadataPreferences
(préférences des métadonnées) du document. L’exemple de script suivant permet de compléter
les données XMP d’un document :
Cet exemple montre également que les informations XMP sont extensibles. Si vous devez joindre des
métadonnées à un document mais que celles-ci ne rentrent pas dans l’une des catégories de l’objet
préférences des métadonnées, vous pouvez créer votre propre conteneur de métadonnées (un e-mail,
dans cet exemple) :
--MetadataExample.as
--AppleScript InDesign CS2
--Crée un document exemple et y ajoute des métadonnées.
tell application "Adobe InDesign CS2"
set myDocument to make document
tell metadata preferences of myDocument
set author to "Olav Martin Kvern"
set copyright info URL to "http://www.adobe.com"
set copyright notice to "This document is copyrighted."
set copyright status to yes
set description to "Example of xmp metadata scripting in InDesign CS"
set document title to "XMP Example"
set job name to "XMP_Example_2004"
set keywords to {"animal", "mineral", "vegetable"}
--L’objet préférences des métadonnées comprend également les informations relatives à la
lecture seule
--au créateur, au format, aux dates de création et de modification, ainsi qu’aux propriétés
serverURL,
--entrées et conservées automatiquement par InDesign.
--Créer un conteneur XMP personnalisé, "email"
set myNewContainer to create container item
¬
namespace "http://ns.adobe.com/xap/1.0/" path "email"
set property namespace "http://ns.adobe.com/xap/1.0/"
¬
path "email/*[1]" value "[email protected]"
end tell
end tell
Création d’un modèle de document
L’exemple suivant permet de créer un document, de déterminer les zones de fond perdu et de ligne-bloc,
d’ajouter des informations aux métadonnées XMP du document, de configurer des gabarits, d’insérer des
pieds de pages ainsi que des informations sur le travail dans un tableau à l’intérieur de la zone de lignebloc :
--DocumentTemplate.as
--AppleScript InDesign CS2
--Crée un modèle de document, comprenant des gabarits, des calques, une couleur, des styles de
paragraphe et de caractère, des repères et des informations XMP.
tell application "Adobe InDesign CS2"
--Créer un document.
set myDocument to make document
tell myDocument
tell document preferences
set page width to "7i"
set page height to "9i"
94
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set page orientation to portrait
end tell
tell margin preferences
set top to ((14 * 4) & "pt") as string
set left to ((14 * 4) & "pt") as string
set bottom to "74pt"
set right to ((14 * 5) & "pt") as string
end tell
--Configurer les zones de fond perdu et de ligne-bloc.
tell document preferences
--Fond perdu
set document bleed bottom offset to "3p"
set document bleed top offset to "3p"
set document bleed inside or left offset to "3p"
set document bleed outside or right offset to "3p"
--Ligne-bloc
set slug bottom offset to "18p"
set slug top offset to "3p"
set slug inside or left offset to "3p"
set slug right or outside offset to "3p"
end tell
--Créer une couleur.
try
set myColor to color "PageNumberRed"
on error
set myColor to make color with properties {name:"PageNumberRed",
¬
model:process, color value:{20, 100, 80, 10}}
end try
--Indiquer ensuite des styles par défaut.
--Créer un style de caractère pour les numéros de pages.
try
set myCharacterStyle to character style "page_number"
on error
set myCharacterStyle to make character style
¬
with properties {name:"page_number"}
end try
set fill color of myCharacterStyle to color "PageNumberRed"
--Créer une paire de styles de paragraphe pour le texte de pied de page.
--Ces styles appliquent une mise en page élémentaire.
try
set myParagraphStyle to paragraph style "footer_left"
on error
set myParagraphStyle to make paragraph style
¬
with properties {name:"footer_left"}
end try
--Créer une paire de styles de paragraphe pour le texte de pied de page.
try
set myParagraphStyle to paragraph style "footer_right"
on error
set myParagraphStyle to make paragraph style
¬
with properties {name:"footer_right",
¬
based on:paragraph style "footer_left", justification:right align}
end try
--Créer un calque pour les repères.
try
set myLayer to layer "GuideLayer"
on error
set myLayer to make layer with properties {name:"GuideLayer"}
end try
--Créer un calque pour les éléments de pied de page.
try
set myLayer to layer "Footer"
on error
set myLayer to make layer with properties {name:"Footer"}
end try
--Créer un calque pour les éléments de ligne-bloc.
try
set myLayer to layer "Slug"
on error
set myLayer to make layer with properties {name:"Slug"}
end try
--Créer un calque pour le corps de texte.
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
try
set myLayer to layer "BodyText"
on error
set myLayer to make layer with properties {name:"BodyText"}
end try
tell view preferences
set ruler origin to page origin
set horizontal measurement units to points
set vertical measurement units to points
end tell
--Grille de ligne de base du document et grille du document
tell grid preferences
set baseline start to 56
set baseline division to 14
set baseline grid shown to false
set horizontal gridline division to 14
set horizontal grid subdivision to 5
set vertical gridline division to 14
set vertical grid subdivision to 5
set document grid shown to false
end tell
--Informations XMP du document.
tell metadata preferences
set author to "Olav Martin Kvern"
set copyright info URL to "http:--www.adobe.com"
set copyright notice to "This document is not copyrighted."
set copyright status to no
set description to "Example 7 x 9 book layout"
set document title to "Example"
set job name to "7 x 9 book layout template"
set keywords to {"7 x 9", "book", "template"}
set myNewContainer to create container item
¬
namespace "http://ns.adobe.com/xap/1.0/" path "email"
set property namespace "http://ns.adobe.com/xap/1.0/"
¬
path "email/*[1]" value "[email protected]"
end tell
--Configurer la planche type.
tell master spread 1
tell page 1
set myMarginPreferences to margin preferences
set myBottomMargin to (page height of document preferences of myDocument ¬
- (bottom of myMarginPreferences)
set myLeftMargin to right of myMarginPreferences
set myRightMargin to (page width of document preferences of myDocument) ¬
- (left of myMarginPreferences)
make guide with properties {orientation:vertical, location:myRightMargin, ¬
item layer:layer "GuideLayer" of myDocument}
make guide with properties {orientation:vertical, location:myLeftMargin, ¬
item layer:layer "GuideLayer" of myDocument}
make guide with properties {orientation:horizontal,
¬
location:top of myMarginPreferences,
¬
item layer:layer "GuideLayer" of myDocument, fit to page:false}
make guide with properties {orientation:horizontal,
¬
location:myBottomMargin,
¬
item layer:layer "GuideLayer" of myDocument, fit to page:false}
make guide with properties {orientation:horizontal,
¬
location:myBottomMargin + 14,
¬
item layer:layer "GuideLayer" of myDocument, fit to page:false}
make guide with properties {orientation:horizontal,
¬
location:myBottomMargin + 28,
¬
item layer:layer "GuideLayer" of myDocument, fit to page:false}
set myLeftFooter to make text frame with properties
¬
{item layer:layer "Footer" of myDocument,
¬
geometric bounds:{myBottomMargin + 14, right of myMarginPreferences, ¬
myBottomMargin + 28, myRightMargin}}
set contents of insertion point 1 of parent story of myLeftFooter
¬
to section marker
set contents of insertion point 1 of parent story of myLeftFooter
¬
to Em space
set contents of insertion point 1 of parent story of myLeftFooter
¬
to auto page number
set applied character style of character 1 of parent story of
¬
myLeftFooter to character style "page_number" of myDocument
95
96
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set applied paragraph style of paragraph 1 of parent story of
¬
myLeftFooter to paragraph style "footer_left" of myDocument
--Informations sur la ligne-bloc.
tell metadata preferences of myDocument
set myEmail to get property
¬
namespace "http://ns.adobe.com/xap/1.0/" path "email/*[1]"
set myDate to current date
set myString to "Author:" & tab & author & tab & "Description:"
¬
& tab & description & return & "Creation Date:" & tab & myDate
¬
& tab & "Email Contact" & tab & myEmail
end tell
set myLeftSlug to make text frame with properties
¬
{item layer:layer "Slug" of myDocument,
¬
geometric bounds:{(page height of document preferences of myDocument) ¬
+ 36, right of myMarginPreferences,
¬
(page height of document preferences of myDocument) + 144,
¬
myRightMargin}, contents:myString}
tell parent story of myLeftSlug
convert to table text 1
end tell
--Bloc de texte type du corps de texte.
set myLeftFrame to make text frame with properties
¬
{item layer:layer "BodyText" of myDocument,
¬
geometric bounds:{top of myMarginPreferences,
¬
right of myMarginPreferences, myBottomMargin, myRightMargin}}
end tell
tell page 2
set myMarginPreferences to margin preferences
set myLeftMargin to left of myMarginPreferences
set myRightMargin to (page width of document preferences of myDocument) ¬
- (right of myMarginPreferences)
make guide with properties {orientation:vertical, location:myLeftMargin, ¬
item layer:layer "GuideLayer" of myDocument}
make guide with properties {orientation:vertical, location:myRightMargin,¬
item layer:layer "GuideLayer" of myDocument}
set myRightFooter to make text frame with properties
¬
{item layer:layer "Footer" of myDocument,
¬
geometric bounds:{myBottomMargin + 14, left of myMarginPreferences, ¬
myBottomMargin + 28, myRightMargin}}
set contents of insertion point 1 of parent story of myRightFooter
¬
to auto page number
set contents of insertion point 1 of parent story of myRightFooter
¬
to Em space
set contents of insertion point 1 of parent story of myRightFooter
¬
to section marker
set applied character style of character -1 of parent story of
¬
myRightFooter to character style "page_number" of myDocument
set applied paragraph style of paragraph 1 of parent story of
¬
myRightFooter to paragraph style "footer_right" of myDocument
--Informations sur la ligne-bloc.
set myRightSlug to make text frame with properties
¬
{item layer:layer "Slug" of myDocument,
¬
geometric bounds:{(page height of document preferences of myDocument) ¬
+ 36, left of myMarginPreferences,
¬
(page height of document preferences of myDocument) + 144,
¬
myRightMargin}, contents:myString}
tell parent story of myRightSlug
convert to table text 1
end tell
--Bloc de texte type du corps de texte.
set myRightFrame to make text frame with properties
¬
{item layer:layer "BodyText" of myDocument,
¬
geometric bounds:{top of myMarginPreferences,
¬
left of myMarginPreferences, myBottomMargin, myRightMargin}}
end tell
end tell
--Insérer un texte de marque de section ; celui-ci apparaîtra dans le pied de page.
set marker of section 1 of myDocument to "Section 1"
--Lorsque vous liez les blocs de texte du gabarit, l’un d’entre eux
--est parfois sélectionné. Désélectionnez-le.
select nothing
end tell
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
97
Impression d’un document
Le script suivant permet d’imprimer le document actif à l’aide des préférences d’impression actuelles :
--PrintDocument.as
--AppleScript InDesign CS2
--Imprime le document actif à l’aide des paramètres d’impression actuels.
tell application "Adobe InDesign CS2"
print active document
end tell
Impression à l’aide de groupes de pages
Pour spécifier un groupe de pages à imprimer, définissez la propriété page range de l’objet print
preferences du document avant d’imprimer :
--PrintPageRange.as
--AppleScript InDesign CS2
--Imprime un groupe de pages à partir du document actif.
--Le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de pages.
--Un numéro de page dans le groupe de pages doit correspondre à un
--nom de page dans le document (et non à l’indice de page, par exemple). Si le nom de page n’est
--pas trouvé, InDesign affiche un message d’erreur.
tell application "Adobe InDesign CS2"
--Configurer un document exemple.
set myDocument to make document
tell myDocument
set pages per document of document preferences to 10
set facing pages of document preferences to false
set myPageHeight to page height of document preferences
set myPageWidth to page width of document preferences
--Créer une planche type d’une seule page.
tell master spread 1
repeat while count pages > 1
delete page -1
end repeat
tell page 1
set myTextFrame to make text frame with properties
¬
{geometric bounds:{0, 0, myPageHeight, myPageWidth},
¬
contents:auto page number}
end tell
set vertical justification of text frame preferences of myTextFrame
¬
to center align
set justification of paragraph 1 of myTextFrame to center align
set point size of character 1 of myTextFrame to 72
end tell
--Fin du document exemple.
set page range of print preferences to "1-3, 10"
print
end tell
end tell
Configuration des préférences d’impression
L’objet print preferences comprend des propriétés correspondant aux options des volets de la boîte
de dialogue d’impression. Cet exemple de script indique comment définir les préférences d’impression à
l’aide d’un script :
--PrintPreferences.as
--AppleScript InDesign CS2
--Définit les préférences d’impression du document actif.
tell application "Adobe InDesign CS2"
--Récupérer les valeurs du fond perdu du document et les augmenter.
tell document preferences of active document
set myX1Offset to document bleed inside or left offset + 3
set myY1Offset to document bleed top offset + 3
set myX2Offset to document bleed outside or right offset + 3
set myY2Offset to document bleed bottom offset + 3
98
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
end tell
tell print preferences of active document
--Propriétés correspondant aux commandes du volet Général
--de la boîte de dialogue d’impression.
--activePrinterPreset est ignoré dans cet exemple ; spécifiez vos
--préférences d’impression.
--L’imprimante peut être soit une chaîne (le nom de l’imprimante) soit
--un fichier Postscript.
set printer to postscript file
--Voici un exemple de configuration d’imprimante pour une imprimante spécifique.
--Configurer l’imprimante « AGFA-SelectSet 5000SF v2013.108 ».
--Si la propriété de l’imprimante correspondent au nom d’une imprimante, alors la propriété
ppd
--est verrouillée (entraînant un message d’erreur si vous essayez de la configurer).
try
set PPD to "AGFA SelectSet 7000-X"
end try
--Si la propriété de l’imprimante indique un fichier Postscript, la propriété
--la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez de
la configurer.
--set copies to 1
--Si la propriété de l’imprimante indique un fichier Printer.postscript, ou si
--l’imprimante sélectionnée ne prend pas en charge l’assemblage, alors
--la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez de
la configurer.
--set collating to false
set reverse order to false
--La configuration de la sortie en couleurs détermine les options disponibles
--dans presque toutes les autres propriétés des préférences d’impression.
try
set color output to separations
end try
--pageRange peut avoir comme attribut PageRange.allPages ou une chaîne de groupe de pages.
set page range to all pages
set print spreads to false
set print master pages to false
--Si la propriété de l’imprimante indique un fichier PostScript, alors
--la propriété du fichier d’impression comprend le chemin du fichier de sortie.
--set printFile to "yukino:test.ps"
set sequence to all
--Si le recouvrement est activé, la configuration des propriétés suivantes entraînera une
erreur :
try
if trapping is off then
set print blank pages to false
set print guides grids to false
set print nonprinting to false
end if
end try
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Format de
--la boîte de dialogue d’impression.
-------------------------------------------------------------------------------set paper size to custom
--La largeur et la hauteur de page sont ignorées si le format du papier n’est pas
personnalisé.
--set paper height to 1200
--set paper width to 1200
set print page orientation to portrait
set page position to centered
set paper gap to 0
set paper offset to 0
set paper transverse to false
set scale height to 100
set scale width to 100
set scale mode to scale width height
set scale proportional to true
--Si le recouvrement est activé (intégré à l’application ou Adobe inRip),
--une erreur se produira si vous essayez de configurer les propriétés suivantes :
if trapping is off then
set thumbnails to false
--Les propriétés suivantes ne sont pas nécessaires car la valeur false est attribuée aux
vignettes.
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
99
--set thumbnails per page to 4
set tile to false
--Les propriétés suivantes ne sont pas nécessaires car la valeur false est attribuée à la
mosaïque.
--set tiling overlap to 12
--set tiling type to auto
end if
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Repères et fonds perdus
--de la boîte de dialogue d’impression.
---------------------------------------------------------------------------------Attribuer la valeur true aux propriétés suivantes pour imprimer tous les repères
d’impression.
--set all Printer Marks to true;
set use document bleed to print to false
--Si l’utilisation du fond perdu pour l’impression est activée, alors la configuration de
l’une des
-- propriétés de fond perdu
--entraînera une erreur.
set bleed bottom to myY2Offset
set bleed top to myY1Offset
set bleed inside to myX1Offset
set bleed outside to myX2Offset
--Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères de
marge.
if bleed bottom is equal to 0 and bleed top is equal to 0 and bleed inside
¬
is equal to 0 and bleed outside is equal to 0 then
set bleed marks to true
else
set bleed marks to false
end if
set color bars to true
set crop marks to true
set include slug to print to false
set mark line weight to p125pt
set mark offset to 6
--set mark Type to default
set page information marks to true
set registration marks to true
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Sortie
--de la boîte de dialogue d’impression.
-------------------------------------------------------------------------------set negative to true
set color output to separations
--Remarquez le « i » minuscule dans « Builtin »
set trapping to application builtin
set screening to "175 lpi/2400 dpi"
set flip to none
--Si le recouvrement est activé,
--une erreur se produira si vous essayez de configurer les propriétés suivantes.
if trapping is off then
set print black to true
set print cyan to true
set print magenta to true
set print yellow to true
end if
--Ne modifiez que l’angle de projection de l’encre et la fréquence si vous souhaitez
remplacer
--le tramage par celui spécifié par la propriété de tramage.
--set black angle to 45
--set black frequency to 175
--set cyan angle to 15
--set cyan frequency to 175
--set magenta angle to 75
--set magenta frequency to 175
--set yellow angle to 0
--set yellow frequency to 175
--Les propriétés suivantes ne sont pas nécessaires (car la sortie en couleurs
--est définie sur séparations).
--set composite angle to 45
--set composite frequency to 175
--désactiver la simulation de la surimpression (false)
100
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Graphiques
--de la boîte de dialogue d’impression.
-------------------------------------------------------------------------------set send image data to all image data
set font downloading to complete
try
set download PPD fonts to true
end try
try
set data format to binary
end try
try
set PostScript level to level 3
end try
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Gestion des couleurs
--de la boîte de dialogue d’impression.
---------------------------------------------------------------------------------Si la valeur false est attribuée aux propriétés d’utilisation de gestion des couleurs
dans les options de couleur,
--une erreur se produit si vous essayez de configurer les propriétés suivantes :
try
set source space to use document
set intent to use color settings
set CRD to use document
set profile to PostScript CMS
end try
---------------------------------------------------------------------------------Propriétés correspondant aux commandes du volet Avancé
--de la boîte de dialogue d’impression.
-------------------------------------------------------------------------------set OPI image replacement to false
set omit bitmaps to false
set omit EPS to false
set omit PDF to false
--L’instruction suivante suppose l’existence d’un aplatissement prédéfini
--nommé "high quality flattener".
try
set flattener preset name to "high quality flattener"
end try
set ignore spread overrides to false
end tell
end tell
Utilisation des impressions prédéfinies
Pour imprimer un document à l’aide d’une impression prédéfinie, insérez celle-ci dans la commande print :
--PrintDocumentWithPreset.as
--AppleScript InDesign CS2
--Imprime le document actif à l’aide du paramètre prédéfini indiqué.
tell application "Adobe InDesign CS2"
--L’instruction suivante suppose l’existence d’une impression prédéfinie
--nommée "myPrintPreset".
print active document using "myPrintPreset"
end tell
Création d’impressions prédéfinies à partir des préférences d’impression
Pour créer une impression prédéfinie à partir des préférences d’impression d’un document :
--CreatePrinterPreset.js
--AppleScript InDesign CS2
--Si le paramètre prédéfini n’existe pas, créez-le à partir.
--des préférences d’impression de myDocument
--sinon, renseignez les propriétés du paramètre prédéfini existant.
tell application "Adobe InDesign CS2"
try
set myPreset to printer preset "myPreset"
on error
set myPreset to make printer preset with properties {name:"myPreset"}
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
end try
set myDocument to active document
tell myPreset
--Le nombre de propriétés d’impression découlant d’autres propriétés d’impression,
--chaque ligne relative à la configuration d’une propriété est encadrée des instructions
try...end try,
--de manière à faciliter l’appréhension de la configuration des impressions prédéfinies.
try
set printer to printer of print preferences of myDocument
end try
try
set PPD to PPD of print preferences of myDocument
end try
try
set copies to copies of print preferences of myDocument
end try
try
set collating to collating of print preferences of myDocument
end try
try
set reverse order to reverse order of print preferences of myDocument
end try
try
set print spreads to print spreads of print preferences of myDocument
end try
try
set print master pages to print master pages of
¬
print preferences of myDocument
end try
try
set print file to printFile of print preferences of myDocument
end try
try
set sequence to sequence of print preferences of myDocument
end try
try
set print blank pages to print blank pages of print preferences of myDocument
end try
try
set print guides grids to print guides grids of
¬
print preferences of myDocument
end try
try
set print nonprinting to print nonprinting of print preferences of myDocument
end try
try
set paper size to paper size of print preferences of myDocument
end try
try
set paper height of myPreset to paper height of
¬
print preferences of myDocument
end try
try
set paper width of myPreset to paper width of print preferences of myDocument
end try
try
set print page orientation of myPreset to print page orientation of
¬
print preferences of myDocument
end try
try
set page position of myPreset to page position of
¬
print preferences of myDocument
end try
try
set paper gap of myPreset to paper gap of print preferences of myDocument
end try
try
set paper offset of myPreset to paper offset of
¬
print preferences of myDocument
end try
try
set paper transverse of myPreset to paper transverse of
¬
print preferences of myDocument
101
102
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
end try
try
set scale height of myPreset to scale height of
¬
print preferences of myDocument
end try
try
set scale width of myPreset to scale width of print preferences of myDocument
end try
try
set scale mode of myPreset to scale mode of print preferences of myDocument
end try
try
set scale proportional of myPreset to scale proportional of
¬
print preferences of myDocument
end try
try
set text as black of myPreset to text as black of
¬
print preferences of myDocument
end try
try
set thumbnails of myPreset to thumbnails of print preferences of myDocument
end try
try
set thumbnails per page of myPreset to thumbnails per page of
¬
print preferences of myDocument
end try
try
set tile of myPreset to tile of print preferences of myDocument
end try
try
set tiling type of myPreset to tiling type of print preferences of myDocument
end try
try
set tiling overlap of myPreset to tiling overlap of
¬
print preferences of myDocument
end try
try
set all printer marks of myPreset to all printer marks of
¬
print preferences of myDocument
end try
try
set use document bleed to print of myPreset to use document bleed to
¬
print of print preferences of myDocument
end try
try
set bleed bottom of myPreset to bleed bottom of
¬
print preferences of myDocument
end try
try
set bleed top of myPreset to bleed top of print preferences of myDocument
end try
try
set bleed inside of myPreset to bleed inside of
¬
print preferences of myDocument
end try
try
set bleed outside of myPreset to bleed outside of
¬
print preferences of myDocument
end try
try
set bleed marks of myPreset to bleed marks of print preferences of myDocument
end try
try
set color bars of myPreset to color bars of print preferences of myDocument
end try
try
set crop marks of myPreset to crop marks of print preferences of myDocument
end try
try
set include slug to print of myPreset to include slug to print of
¬
print preferences of myDocument
end try
try
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
set mark line weight of myPreset to mark line weight of
¬
print preferences of myDocument
end try
try
set mark offset of myPreset to mark offset of print preferences of myDocument
end try
try
set mark type of myPreset to mark type of print preferences of myDocument
end try
try
set page information marks of myPreset to page information marks of
¬
print preferences of myDocument
end try
try
set registration marks of myPreset to registration marks of
¬
print preferences of myDocument
end try
try
set negative of myPreset to negative of print preferences of myDocument
end try
try
set color output of myPreset to color output of
¬
print preferences of myDocument
end try
try
set trapping of myPreset to trapping of print preferences of myDocument
end try
try
set screening of myPreset to screening of print preferences of myDocument
end try
try
set flip of myPreset to flip of print preferences of myDocument
end try
try
set print black of myPreset to print black of print preferences of myDocument
end try
try
set print cyan of myPreset to print cyan of print preferences of myDocument
end try
try
set print magenta of myPreset to print magenta of
¬
print preferences of myDocument
end try
try
set print yellow of myPreset to print yellow of
¬
print preferences of myDocument
end try
try
set black angle of myPreset to black angle of print preferences of myDocument
end try
try
set black frequency of myPreset to black frequency of
¬
print preferences of myDocument
end try
try
set cyan angle of myPreset to cyan angle of print preferences of myDocument
end try
try
set cyan frequency of myPreset to cyan frequency of
¬
print preferences of myDocument
end try
try
set magenta angle of myPreset to magenta angle of
¬
print preferences of myDocument
end try
try
set magenta frequency of myPreset to magenta frequency of
¬
print preferences of myDocument
end try
try
set yellow angle of myPreset to yellow angle of
¬
print preferences of myDocument
end try
103
104
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
try
set yellow frequency of myPreset to yellow frequency of
¬
print preferences of myDocument
end try
try
set composite angle of myPreset to composite angle of
¬
print preferences of myDocument
end try
try
set composite frequency of myPreset to composite frequency of
¬
print preferences of myDocument
end try
try
set simulate overprint of myPreset to simulate overprint of
¬
print preferences of myDocument
end try
try
set send image data of myPreset to send image data of
¬
print preferences of myDocument
end try
try
set font downloading of myPreset to font downloading of
¬
print preferences of myDocument
end try
try
set download PPD fonts of myPreset to download PPD fonts of
¬
print preferences of myDocument
end try
try
set data format of myPreset to data format of print preferences of myDocument
end try
try
set PostScript level of myPreset to PostScript level of
¬
print preferences of myDocument
end try
try
set source space of myPreset to source space of
¬
print preferences of myDocument
end try
try
set intent of myPreset to intent of print preferences of myDocument
end try
try
set CRD of myPreset to CRD of print preferences of myDocument
end try
try
set profile of myPreset to profile of print preferences of myDocument
end try
try
set OPI image replacement of myPreset to OPI image replacement of
¬
print preferences of myDocument
end try
try
set omit bitmaps of myPreset to omit bitmaps of
¬
print preferences of myDocument
end try
try
set omit EPS of myPreset to omit EPS of print preferences of myDocument
end try
try
set omit PDF of myPreset to omit PDF of print preferences of myDocument
end try
try
set flattener preset name of myPreset to flattener preset name of
¬
print preferences of myDocument
end try
try
set ignore spread overrides of myPreset to ignore spread overrides of
¬
print preferences of myDocument
end try
display dialog ("Done!")
end tell
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
105
Exportation d’un document au format PDF
Le script InDesign permet de gérer entièrement la création de fichiers PDF depuis vos documents de mise
en page.
Utilisation des options d’exportation PDF actuelles
Le script suivant permet d’exporter le document actif au format PDF à l’aide d’un paramètre prédéfini
d’exportation PDF :
--ExportPDF.as
--AppleScript InDesign CS2
--Suppose que vous disposez d’un document ouvert.
--Les paramètres de commande d’exportation sont les suivants :
--format de fichier (format as) - utilisez l’énumération du type pdf ou la chaîne Adobe PDF ;
--chaîne de destination (to) - indiquez un chemin de fichier complet ;
--options d’affichage booléennes - la valeur true permet l’affichage de
--la boîte de dialogue d’exportation PDF.
--Utiliser comme paramètre prédéfini d’exportation PDF (ou une chaîne correspondant au nom d’un
paramètre prédéfini d’exportation PDF)
tell application "Adobe InDesign CS2"
tell active document
export format PDF type to "yukino:test.pdf" using "myTestPreset" without
¬
showing options
end tell
end tell
Configuration des options d’exportation PDF
L’exemple suivant permet de configurer les options d’exportation PDF avant l’exportation :
--ExportPDFWithOptions.as
--AppleScript InDesign CS2
--Définit les préférences d’exportation PDF.
tell application "Adobe InDesign CS2"
--Extraire les valeurs du fond perdu du document.
tell document preferences of active document
set myX1Offset to document bleed inside or left offset
set myY1Offset to document bleed top offset
set myX2Offset to document bleed outside or right offset
set myY2Offset to document bleed bottom offset
end tell
tell PDF export preferences
--Options de sortie PDF standard.
set page range to all pages
set acrobat compatibility to acrobat 6
set export guides and grids to false
set export layers to false
set export nonprinting objects to false
set export reader spreads to false
set generate thumbnails to false
try
set ignore spread overrides to false
end try
set include bookmarks to true
set include hyperlinks to true
try
set include ICC profiles to true
end try
set include slug with PDF to false
set include structure to false
set interactive elements to false
--Attribuer la valeur zéro à l’option jeu partiel des polices au-dessous de désactive le
jeu partiel des polices.
--Attribuez une autre valeur pour utiliser le jeu partiel des polices.
set subset fonts below to 0
--Options de qualité/échantillonnage/compression Bitmap.
set color bitmap compression to zip
106
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
set color bitmap quality to eight bit
set color bitmap sampling to none
--Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs dans le présent
exemple.
--Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap
couleurs lorsque celui-ci
--n’est pas activé (none).
set grayscale bitmap compression to zip
set grayscale bitmap quality to eight bit
set grayscale bitmap sampling to none
--Il n’est pas nécessaire d’indiquer un seuil de compression des niveaux de gris dans cet
exemple.
--Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap en
niveaux de gris lorsque celui-ci
--n’est pas activé (none).
set monochrome bitmap compression to zip
set monochrome bitmap sampling to none
--Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs monochromes dans
le présent exemple.
--Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap
monochromes lorsque celui-ci
--n’est pas activé (none).
--Autres options de compression.
set compression type to Compress None
set compress text and line art to true
set content to embed to Embed All
set crop images to frames to true
set optimize PDF to true
--Options de prépresse et repères d’impression.
set bleed bottom to myY2Offset
set bleed top to myY1Offset
set bleed inside to myX1Offset
set bleed outside to myX2Offset
--Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères de
marge.
if bleed bottom is 0 and bleed top is 0 and bleed inside is 0 and
¬
bleed outside is 0 then
set bleed marks to true
else
set bleed marks to false
end if
set color bars to true
----La taille des carreaux en couleurs et en niveaux de gris n’est pas utilisée,
--à moins que la méthode de compression choisie soit JPEG2000.
--set color tile size to 256
--set Gray tile size to 256
set crop marks to true
set omit bitmaps to false
set omit EPS to false
set omit PDF to false
set page information marks to true
set page marks offset to "12 pt"
set PDF color space to unchanged color space
set PDF mark type to default
set printer mark weight to p125pt
set registration marks to true
--La simulation de la surimpression n’est disponible que lorsque la norme d’exportation
--est PDF/X-1a ou PDF/X-3
--désactiver la simulation de la surimpression (false)
set use document bleed with PDF to true
--Attribuer à viewPDF la valeur true pour ouvrir le PDF dans Acrobat ou Adobe Reader.
set view PDF to false
end tell
--Exportez maintenant le document.
tell active document
export format PDF type to "yukino:test.pdf" without showing options
end tell
end tell
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
107
Exportation d’un groupe de pages
L’exemple suivant indique comment exporter un groupe de pages spécifique au format PDF :
--ExportPageRangeAsPDF.js
--AppleScript InDesign CS2
--Exporte un groupe de pages au format PDF.
--Suppose que vous disposez d’un document ouvert, et qu’il comprend au minimum 12 pages.
tell application "Adobe InDesign CS2"
tell PDF export preferences
--le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de
pages
--(comme vous l’indiqueriez dans les boîtes de dialogue d’impression ou d’exportation PDF).
set page range to "1, 3-6, 7, 9-11, 12"
end tell
tell active document
export format PDF type to "yukino:test.pdf" using
¬
PDF export preset "myTestPreset" without showing options
end tell
end tell
Exportation de pages individuelles
L’exemple suivant permet d’exporter chaque page d’un document en fichier PDF individuel :
--ExportEachPageAsPDF.as
--AppleScript InDesign CS2.
--Exporte chaque page d’un document InDesign CS en tant que fichier PDF individuel dans un
--dossier sélectionné, à l’aide des paramètres d’exportation PDF actuels.
--Afficher une boîte de dialogue "choose folder".
tell application "Adobe InDesign CS2"
if (count documents) is not equal to 0 then
my myChooseFolder()
else
display dialog "Please open a document and try again."
end if
end tell
on myChooseFolder()
set myFolder to choose folder with prompt "Choose a Folder"
--Extraire le nom du dossier (il sera renvoyé sous forme de chaîne Unicode).
set myFolder to myFolder as string
--Méthode tierce pour remplacer le nom du dossier en Unicode par une chaîne de texte brut.
set myFolder to «class ktxt» of (myFolder as record)
if myFolder is not equal to "" then
my myExportPages(myFolder)
end if
end myChooseFolder
on myExportPages(myFolder)
tell application "Adobe InDesign CS2"
set myDocument to active document
set myDocumentName to name of myDocument
set myDialog to make dialog with properties {name:"File Naming Options"}
tell myDialog
tell (make dialog column)
tell (make dialog row)
make static text with properties {static label:"Base name:"}
set myBaseNameField to make text editbox
¬
with properties {edit contents:myDocumentName, min width:160}
end tell
end tell
end tell
set myResult to show myDialog
if myResult is true then
--Le nom des fichiers exportés est composé du nom de base + la valeur
--du compteur + « .pdf ».
set myBaseName to edit contents of myBaseNameField
--Supprimer la boîte de dialogue de la mémoire.
destroy myDialog
repeat with myCounter from 1 to (count pages in myDocument)
set myPageName to name of page myCounter of myDocument
set page range of PDF export preferences to name of page myCounter
¬
108
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
of myDocument
--Générer un chemin de fichier à partir du nom de dossier, du nom du document de base
--et du nom de la page.
--Remplacer toute occurrence du caractère deux-points dans le nom de la page (par
exemple, « Sec1:1 ») de sorte
--qu’il n’entraîne pas
--de conflit de dénomination du fichier.
set myPageName to my myReplace(myPageName, ":", "_")
set myFilePath to myFolder & myBaseName & "_" & myPageName & ".pdf"
tell myDocument
--La commande d’exportation échouera si vous indiquez un chemin de fichier
--en texte Unicode ; c’est pour cette raison que vous avez dû convertir le nom du
dossier
--en texte brut.
export format PDF type to myFilePath
end tell
end repeat
else
destroy myDialog
end if
end tell
end myExportPages
on myReplace(myString, myFindString, myChangeString)
set AppleScript’s text item delimiters to myFindString
set myTextList to every text item of (myString as text)
set AppleScript’s text item delimiters to myChangeString
set myString to myTextList as string
set AppleScript’s text item delimiters to ""
return myString
end myReplace
Exportation de pages au format EPS
Lorsque vous exportez un document au format EPS, InDesign enregistre chaque page du fichier en tant
que graphique EPS individuel (par définition, un fichier EPS ne peut comprendre qu’une seule page).
Si vous exportez plusieurs pages, InDesign ajoute l’indice de la page au nom de fichier. L’indice de la
page dans le document n’est pas nécessairement le nom de la page (tel qu’il est défini par les options de
section pour la section comprenant la page en question).
Exportation de toutes les pages
Le script suivant permet d’exporter les pages du document actif dans un ou plusieurs fichiers EPS :
--ExportAsEPS.as
--AppleScript InDesign CS2
--Exporte toutes les pages du document actif dans une série de fichiers EPS
--(par définition, un fichier EPS ne peut comprendre qu’une seule page).
tell application "Adobe InDesign CS2"
set page range of EPS export preferences to all pages
tell active document
--Spécifiez le nom de votre fichier. Les fichiers seront nommés
--« myFile_01.eps », « myFile_02.eps », etc.
set myFileName to "yukino:myFile.eps"
export format EPS type to myFileName without showing options
end tell
end tell
Exportation d’un groupe de pages
Pour contrôler les pages à exporter en EPS, attribuez à la propriété page range des préférences
d’exportation EPS une chaîne de groupe de pages comprenant les pages que vous souhaitez exporter
avant l’exportation :
--ExportPageRangeAsEPS.as
--AppleScript InDesign CS2
--Exporte un groupe de pages au format EPS.
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans AppleScript
109
--Suppose que vous disposez d’un document ouvert, et que celui-ci
--comprend au minimum 12 pages.
tell application "Adobe InDesign CS2"
tell EPS export preferences
--le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de
pages
--(comme vous l’indiqueriez dans les boîtes de dialogue d’impression ou d’exportation EPS).
set page range to "1, 3-6, 7, 9-11, 12"
end tell
tell active document
export format EPS type to "yukino:test.eps" without showing options
end tell
end tell
Exportation avec dénomination de fichier
L’exemple suivant permet d’exporter chaque page au format EPS, mais offre un contrôle accru de la
dénomination de fichier, comparé à l’exemple précédent :
--ExportEachPageAsEPS.as
--AppleScript InDesign CS2
--Exporte chaque page d’un document en EPS vers un dossier spécifique.
--Afficher une boîte de dialogue "choose folder".
tell application "Adobe InDesign CS2"
if (count documents) is not equal to 0 then
my myChooseFolder()
else
display dialog "Please open a document and try again."
end if
end tell
on myChooseFolder()
set myFolder to choose folder with prompt "Choose a Folder"
--Extraire le nom du dossier (il sera renvoyé sous forme de chaîne Unicode).
set myFolder to myFolder as string
--Méthode tierce pour remplacer le nom du dossier en Unicode par une chaîne de texte brut.
set myFolder to «class ktxt» of (myFolder as record)
if myFolder is not equal to "" then
my myExportPages(myFolder)
end if
end myChooseFolder
on myExportPages(myFolder)
tell application "Adobe InDesign CS2"
set myDocument to active document
set myDocumentName to name of myDocument
set myDialog to make dialog with properties {name:"ExportPages"}
tell myDialog
tell (make dialog column)
tell (make dialog row)
make static text with properties {static label:"Base Name:"}
set myBaseNameField to make text editbox
¬
with properties {edit contents:myDocumentName, min width:160}
end tell
end tell
end tell
set myResult to show myDialog
if myResult is true then
--Le nom des fichiers exportés est composé du nom de base + la
--valeur du compteur + « .pdf ».
set myBaseName to edit contents of myBaseNameField
--Supprimer la boîte de dialogue de la mémoire.
destroy myDialog
repeat with myCounter from 1 to (count pages in myDocument)
--Extraire le nom de la page et l’attribuer à la variable "myPageName"
set myPageName to name of page myCounter of myDocument
--Attribuer au groupe de pages le nom de la page donnée.
set page range of EPS export preferences to myPageName
--Générer un chemin de fichier à partir du nom de dossier, du nom du document de base
--et du nom de la page.
--Remplacer toute occurrence du caractère deux-points dans le nom de la page (par
exemple, « Sec1:1 ») de sorte
--qu’il n’entraîne pas
110
Utilisation de documents dans AppleScript
Adobe InDesign CS2 Guide des scripts
--de conflit de dénomination du fichier.
set myPageName to my myReplace(myPageName, ":", "_")
set myFilePath to myFolder & myBaseName & "_" & myPageName & ".eps"
tell myDocument
export format EPS type to myFilePath without showing options
end tell
end repeat
else
destroy myDialog
end if
end tell
end myExportPages
on myReplace(myString, myFindString, myChangeString)
set AppleScript’s text item delimiters to myFindString
set myTextList to every text item of (myString as text)
set AppleScript’s text item delimiters to myChangeString
set myString to myTextList as string
set AppleScript’s text item delimiters to ""
return myString
end myReplace
Adobe InDesign CS2 Guide des scripts
6
Utilisation de documents dans JavaScript
Utilisation de documents dans JavaScript
La plupart des tâches que vous effectuez dans InDesign concernent des documents : création,
enregistrement, insertion d’éléments de page, de couleurs, de styles et de textes. Les documents sont
également nécessaires au script InDesign, et presque chaque tâche associée à un document peut être
automatisée par le biais d’un script.
Dans ce chapitre, vous apprendrez à :


Effectuer les tâches élémentaires de gestion de documents, parmi lesquelles

Créer un document

Ouvrir un document

Fermer un document

Enregistrer un document
Effectuer les tâches élémentaires de mise en page, notamment :

Définir le format de page et la longueur du document

Définir le fond perdu et la ligne-bloc

Déterminer les colonnes et les marges

Changer l’aspect de la table de montage

Utiliser les repères et les grilles

Changer les unités de mesure et le point d’origine de la règle

Déterminer et appliquer les paramètres prédéfinis de document

Définir les pages types (les doubles pages types)

Définir les paramètres de mise en forme de texte par défaut

Ajouter des métadonnées XMP (informations sur un fichier)

Créer un modèle de document

Imprimer un document

Exporter un document au format PDF

Exporter des pages d’un document au format EPS
Remarque : si ce n’est déjà fait, consultez le chapitre 3, « Initiation aux scripts InDesign » et apprenez à
créer un script avant de continuer.
111
112
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
Notions de base de la gestion de documents
Dans la plupart des situations, votre script doit soit ouvrir soit créer un document, l’enregistrer, puis le
fermer.
Création d’un document
Si vous n’avez pas de document existant, vous devez en créer un. Pour créer un document :
//MakeDocument.jsx
//JavaScript InDesign CS2
//Crée un document.
var myDocument = app.documents.add();
La méthode document.add peut s’agrémenter de deux paramètres facultatifs, comme l’indique le script
suivant :
//MakeDocumentWithParameters.jsx
//JavaScript InDesign CS2
//Indique comment utiliser les paramètres de la méthode d’ouverture de document.
//Le premier paramètre (showingWindow) permet de contrôler la visibilité du
//document. Les documents masqués ne sont pas réduits, et ne s’affichent que lorsque
//vous ajoutez une nouvelle fenêre au document. Le second paramètre (documentPreset)
//précise quel paramètre prédéfini de document utiliser. L’instruction suivante suppose
//l’existence sur votre système d’un paramètre prédéfini de document nommé "Flyer".
var myDocument = app.documents.add(true, app.documentPresets.item("Flyer"));
Ouverture d’un document
L’exemple de script ci-dessous indique comment ouvrir un document existant :
//OpenDocument.jsx
//JavaScript InDesign CS2
//Ouvre un document existant. Spécifiez le chemin de votre fichier.
app.open(File("/c/myTestDocument.indd"));
Définissez le paramètre showingWindow sur false (la valeur par défaut est true) dans
la méthode Open pour ne pas afficher le document (le masquer). Ceci peut vous permettre d’améliorer
les performances d’un script. Pour afficher un document masqué, créez une fenêtre, comme indiqué dans
le script suivant :
//OpenDocumentInBackground.jsx
//JavaScript InDesign CS2
//Ouvre un document existant en arrière-plan, puis affiche ce document.
//Spécifiez le chemin de votre fichier.
var myDocument = app.open(File("/c/myTestDocument.indd"), false);
//A ce stade, vous pouvez travailler sur le document sans afficher la
//fenêtre du document. Dans certains cas, les scripts s’exécutent plus vite si la fenêtre du
document
//n’est pas visible.
//Lorsque vous souhaitez afficher le document masqué, créez une fenêtre.
var myLayoutWindow = myDocument.windows.add();
Fermeture d’un document
La méthode Close permet de fermer un document :
//CloseDocument.jsx
//JavaScript InDesign CS2
//Ferme le document actif.
app.activeDocument.close();
//Notez que vous pouvez également utiliser :
//app.documents.item(0).close();
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
La méthode Close peut accepter deux paramètres facultatifs :
//CloseWithParameters.jsx
//JavaScript InDesign CS2
//Utiliser SaveOptions.yes pour enregistrer le document, SaveOptions.no pour fermer le
//document sans l’enregistrer ou SaveOptions.ask pour afficher une invite. Si vous utilisez
//SaveOptions.yes, vous devrez faire référence à un fichier vers lequel
//enregistrer dans le second paramètre (SavingIn).
//Notez que le chemin de fichier est fourni à l’aide du formulaire JavaScript URI
//plutôt que du formulaire spécifique à la plate-forme.
//
//Si le fichier n’a pas été enregistré, affichez une invite.
if(app.activeDocument.saved != true){
app.activeDocument.close(SaveOptions.ask);
//Ou, pour enregistrer sous un nom de fichier particulier, entrez :
//var myFile = File("/c/myTestDocument.indd");
//app.activeDocument.close(SaveOptions.yes, myFile);
}
else{
//Si le fichier a déjà été enregistré, enregistrez-le.
app.activeDocument.close(SaveOptions.yes);
}
Cet exemple ferme tous les documents ouverts sans les enregistrer :
//CloseAll.jsx
//JavaScript InDesign CS2
//Ferme tous les documents ouverts sans les enregistrer.
for(myCounter = app.documents.length; myCounter > 0; myCounter--){
app.documents.item(myCounter-1).close(SaveOptions.no);
}
Enregistrement d’un document
Dans l’interface utilisateur d’InDesign, la commande Enregistrer du menu Fichier permet d’enregistrer
un fichier, l’option Enregistrer sous permet d’enregistrer un fichier sous un nom différent. Dans le script
InDesign, la méthode save permet d’effectuer les deux opérations :
//SaveDocument.jsx
//JavaScript InDesign CS2
//Si le document actif a subi des modifications depuis le dernier enregistrement, enregistrezle.
if(app.activeDocument.modified == true){
app.activeDocument.save();
}
La méthode saver propose deux options : la première (to) détermine le fichier vers lequel le fichier
actuel doit être enregistré ; la seconde (stationery) peut être définie sur true pour enregistrer le document
en tant que modèle :
//SaveDocumentAs.jsx
//JavaScript InDesign CS2
//Si le document actif n’a pas encore été enregistré (s’il s’agit du premier enregistrement),
enregistrez-le.
if(app.activeDocument.saved == false){
//Si vous n’attribuez pas de nom de fichier, InDesign affichera la boîte de
dialogue Enregistrer.
app.activeDocument.save(new File("/c/myTestDocument.indd"));
}
L’exemple suivant permet d’enregistrer un document en tant que modèle :
//SaveAsTemplate.jsx
//JavaScript InDesign CS2
//Enregistrer le document actif en tant que modèle.
var myFileName;
if(app.activeDocument.saved == true){
//Convertir le nom de fichier en une chaîne de caractères.
myFileName = app.activeDocument.fullName + "";
113
114
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
//Si le nom du fichier comprend l’extension « .indd », remplacez-la par « .indt ».
if(myFileName.indexOf(".indd")!=-1){
var myRegularExpression = /.indd/gi
myFileName = myFileName.replace(myRegularExpression, ".indt");
}
}
//Si le document n’a pas été enregistré, indiquez un nom/chemin par défaut.
else{
myFileName = "/c/myTestDocument.indt";
}
app.activeDocument.save(File(myFileName), true);
Notions de base de la mise en page
Chaque document comprend un format de page, un nombre de pages attribué, des zones de fond perdu
et de ligne-bloc, des colonnes et des marges qui définissent la zone de placement des éléments.
Définition du format de page et de la longueur du document
Lorsque vous créez un document dans l’interface utilisateur d’InDesign, vous pouvez spécifier le format et
l’orientation de la page, le nombre de pages et l’utilisation éventuelle de pages en vis-à-vis. Pour créer un
document à l’aide d’un script InDesign, vous utilisez la méthode documents.add, qui ne permet pas de
définir ces paramètres. Une fois le document créé, vous pouvez contrôler ces paramètres grâce à l’objet
documentPreferences :
//DocumentPreferences.jsx
//JavaScript InDesign CS2
//Utiliser l’objet préférences du document pour modifier les
//dimensions et l’orientation du document.
var myDocument = app.documents.add();
with(myDocument.documentPreferences){
pageHeight = "800pt";
pageWidth = "600pt";
pageOrientation = PageOrientation.landscape;
pagesPerDocument = 16;
}
Remarque : l’objet application contient également un objet document preference. Vous pouvez
déterminer les valeurs par défaut de l’application pour la hauteur et la largeur de page, ainsi
que d’autres propriétés en modifiant les propriétés de cet objet.
Définition du fond perdu et de la ligne-bloc
Dans InDesign, le fond perdu et la ligne-bloc sont des zones en-dehors des marges qui peuvent être
imprimées ou comprises dans un document PDF exporté. De manière générale, ces zones sont utilisées
pour les objets qui s’étendent au-delà des bords de page (fond perdu) et des informations sur le
document/travail (ligne-bloc). Les deux zones peuvent être imprimées et exportées indépendamment
l’une de l’autre. Par exemple, vous pouvez choisir d’ignorer les informations sur la ligne-bloc pour
l’impression finale d’un document. Le script suivant détermine le fond perdu et la ligne-bloc pour un
nouveau document :
//BleedAndSlug.jsx
//JavaScript InDesign CS2
//Créer un document.
myDocument = app.documents.add();
//Les propriétés de fond perdu et de ligne-bloc appartiennent à l’objet documentPreferences.
with(myDocument.documentPreferences){
//Fond perdu
documentBleedBottomOffset = "3p";
documentBleedTopOffset = "3p";
documentBleedInsideOrLeftOffset = "3p";
documentBleedOutsideOrRightOffset = "3p";
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
115
//Ligne-bloc
slugBottomOffset = "18p";
slugTopOffset = "3p";
slugInsideOrLeftOffset = "3p";
slugRightOrOutsideOffset = "3p";
}
Si toutes les valeurs du fond perdu sont égales, comme dans l’exemple précédent, vous pouvez
également utiliser la propriété documentBleedUniformSize :
//UniformBleed.jsx
//JavaScript InDesign CS2
//Créer un document.
myDocument = app.documents.add();
//Les propriétés de fond perdu appartiennent à l’objet documentPreferences.
with(myDocument.documentPreferences){
//Fond perdu
documentBleedUniformSize = true;
documentBleedTopOffset = "3p";
}
Si toutes les valeurs de la ligne-bloc sont égales, vous pouvez utiliser la propriété DocumentSlugUnifor
mSize :
//UniformSlug.jsx
//JavaScript InDesign CS2
//Créer un document.
myDocument = app.documents.add();
//La propriété de ligne-bloc appartient à l’objet documentPreferences.
with(myDocument.documentPreferences){
//Ligne-bloc :
documentSlugUniformSize = true;
slugTopOffset = "3p";
}
Vous pouvez non seulement déterminer la largeur et la hauteur des zones de fond perdu et de ligne-bloc,
mais également la couleur des repères délimitant ces zones. Cette propriété ne se trouve pas dans l’objet
document preferences, mais dans l’objet pasteboardPreferences :
//BleedSlugGuideColors.jsx
//JavaScript InDesign CS2
//Configurer les couleurs pour afficher les repères de fond perdu et de ligne-bloc.
with(app.activeDocument.pasteboardPreferences){
//Tous les repères InDesign peuvent utiliser les constantes de couleurs UI...
bleedGuideColor = UIColors.cuteTeal;
slugGuideColor = UIColors.charcoal;
//...ou un ensemble de valeurs RVB (de 0 à 255)
//bleedGuideColor = [0, 198, 192];
//slugGuideColor = [192, 192, 192];
}
Configuration des marges et des colonnes
Dans un document, chaque page peut être configurée différemment en termes de marges et de colonnes.
Avec le script InDesign, ces propriétés font partie de l’objet marginPreferences pour chaque page.
A titre d’exemple, ce script crée un document, puis définit les marges et les colonnes pour toutes les pages
de la planche type :
//MarginsAndColumns.jsx
//JavaScript InDesign CS2
//Définit les marges et les colonnes de la première page du document exemple.
myDocument = app.documents.add();
with (myDocument.pages.item(0).marginPreferences){
columnCount = 3;
//columnGutter peut être soit un nombre, soit des mesures.
columnGutter = "1p";
bottom = "6p"
//Lorsque document.documentPreference
s.facingPages == true,
//« left » (gauche) signifie intérieur, « right » (droite) extérieur.
116
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
left = "6p"
right = "4p"
top = "4p"
}
InDesign vous permet de ne pas créer de page qui soit plus petite que la somme de ses marges. La largeur
de la page doit être supérieure à la somme des marges gauche et droite, et la hauteur de page doit être
supérieure à la somme des marges de haut et de bas de page. Si vous créez des pages très petites (pour
un encart presse par exemple) dans l’interface utilisateur InDesign, entrez de nouvelles valeurs dans la
zone de texte Marges de la boîte de dialogue Nouveau document pour définir des marges correctes lors
de la création du document.
Toutefois, la solution est moins évidente avec un script. Lorsque vous créez un document, le script
utilise les préférences de marge par défaut de l’application. Ces marges sont appliquées à toutes les
pages du document, y compris aux gabarits. Les préférences de marges du document, une fois définies,
ne s’appliquent qu’aux nouvelles pages et n’ont pas d’incidence sur les pages existantes. Si vous
essayez de définir la hauteur et la largeur de page avec des valeurs inférieures à la somme des marges
correspondantes sur l’une des pages existantes, InDesign ne modifie pas le format de page.
Deux solutions s’offrent à vous. La première consiste à définir les marges des pages existantes avant de
modifier le format de page :
//PageMargins.jsx
//JavaScript InDesign CS2
//Crée un document et détermine ses marges.
var myDocument = app.documents.add();
myDocument.marginPreferences.top = 0;
myDocument.marginPreferences.left = 0;
myDocument.marginPreferences.bottom = 0;
myDocument.marginPreferences.right = 0;
//L’instruction suivante suppose que votre document par défaut comprend une seule page.
myDocument.pages.item(0).marginPreferences.top = 0;
myDocument.pages.item(0).marginPreferences.left = 0;
myDocument.pages.item(0).marginPreferences.bottom = 0;
myDocument.pages.item(0).marginPreferences.right = 0;
//L’instruction suivante suppose que votre planche type par défaut comprend deux pages.
myDocument.masterSpreads.item(0).pages.item(0).marginPreferences.top = 0;
myDocument.masterSpreads.item(0).pages.item(0).marginPreferences.left = 0;
myDocument.masterSpreads.item(0).pages.item(0).marginPreferences.bottom = 0;
myDocument.masterSpreads.item(0).pages.item(0).marginPreferences.right = 0;
myDocument.masterSpreads.item(0).pages.item(1).marginPreferences.top = 0;
myDocument.masterSpreads.item(0).pages.item(1).marginPreferences.left = 0;
myDocument.masterSpreads.item(0).pages.item(1).marginPreferences.bottom = 0;
myDocument.masterSpreads.item(0).pages.item(1).marginPreferences.right = 0;
myDocument.documentPreferences.pageHeight = "1p";
myDocument.documentPreferences.pageWidth = "6p";
Vous pouvez également modifier les préférences de marges par défaut de l’application avant de créer le
document :
//ApplicationPageMargins.jsx
//JavaScript InDesign CS2
//Définit les marges de pages par défaut de l’application. Ces paramètres s’appliquent à
//tous les nouveaux documents ; les documents existants restent intacts.
with (app.marginPreferences){
//Enregistrer les préférences de marges par défaut actuelles de l’application.
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Définir les préférences de marges par défaut de l’application.
top = 0;
left = 0;
bottom = 0;
right = 0;
}
//Créer un document exemple pour mettre en évidence les modifications.
var myDocument = app.documents.add();
myDocument.documentPreferences.pageHeight = "1p";
myDocument.documentPreferences.pageWidth = "6p";
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
117
//Rétablir les préférences de marges par défaut de l’application à leur état antérieur.
with (app.marginPreferences){
top = myY1;
left = myX1 ;
bottom = myY2;
right = myX2;
}
Modification de l’aspect de la table de montage
La table de montage est une zone qui encadre les pages InDesign. Vous pouvez y stocker temporairement
des éléments de la page. Il est possible de modifier la taille et la couleur de la table de montage à l’aide
d’un script. La propriété pasteboardColor permet d’en contrôler la couleur en mode Normal ;
la propriété de previewBackgroundColor définit la couleur de la table de montage en mode Aperçu :
//PasteboardPreferences.jsx
//JavaScript InDesign CS2
//Créer un document et modifier la taille de la table de montage.
myDocument = app.documents.add();
with(myDocument.pasteboardPreferences){
//Vous pouvez utiliser soit un nombre, soit des mesures
//pour définir l’espace au-dessus/en dessous.
minimumSpaceAboveAndBelow = "12p";
//Il est possible d’attribuer à la table de montage l’une des
//constantes de couleurs UI prédéfinies...
pasteboardColor = UIColors.white;
previewBackgroundColor = UIColors.gray;
//...ou un ensemble de valeurs RVB
//(de 0 à 255)
//pasteboardColor = [0, 0, 0];
//previewBackgroundColor = [192, 192, 192];
}
Utilisation des repères et des grilles
Les repères et les grilles facilitent le positionnement des objets sur les pages de votre document.
Définition des repères
InDesign propose des repères pour vous aider à positionner les objets sur les pages de votre document.
Exemple d’utilisation des repères :
//Guides.jsx
//JavaScript InDesign CS2
//Créer un document, insérer des repères et définir les propriétés des repères.
var myDocument = app.documents.add();
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight;
with(myDocument.pages.item(0)){
//Placer des repères sur les marges de la page.
guides.add(undefined, {orientation:HorizontalOrVertical.vertical, location:marginPreferences.
left});
guides.add(undefined, {orientation:HorizontalOrVertical.vertical, location:(myPageWidth marginPreferences.right)});
guides.add(undefined, {orientation:HorizontalOrVertical.horizontal, location:
marginPreferences.top});
guides.add(undefined, {orientation:HorizontalOrVertical.horizontal, location:(myPageHeight marginPreferences.bottom)});
//Placer un repère vertical au centre de la page.
guides.add(undefined, {orientation:HorizontalOrVertical.vertical, location:(myPageWidth/2)});
//Placer un repère horizontal au centre de la page.
guides.add(undefined, {orientation:HorizontalOrVertical.horizontal, location:(myPageHeight/2)}
);
}
118
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
Les repères horizontaux peuvent se limiter à une page donnée, ou s’étendre sur toutes les pages d’une
planche. A l’aide d’un script InDesign, vous pouvez contrôler cette possibilité grâce à la propriété
fitToPage. (les repères verticaux ignorent cette propriété).
//SpreadAndPageGuides.jsx
//JavaScript InDesign CS2
//Mettre en évidence la différence entre les repères de planche et les repères de page.
var myDocument = app.documents.add();
myDocument.documentPreferences.facingPages = true;
myDocument.documentPreferences.pagesPerDocument = 3;
with(myDocument.spreads.item(1)){
//Notez la différence entre ces deux repères sur les pages 2 et 3.
guides.add(undefined, {orientation:HorizontalOrVertical.horizontal, location:"6p", fitToPage:
true});
guides.add(undefined, {orientation:HorizontalOrVertical.horizontal, location:"9p", fitToPage:
false});
}
Vous pouvez utiliser un script pour modifier le calque, la couleur et la visibilité des repères, tout comme
vous pouvez le faire à partir de l’interface utilisateur :
//GuideOptions.jsx
//JavaScript InDesign CS2
//Indique comment définir les options de repères.
var myGuide;
var myDocument = app.documents.add();
//Créer un calque nommé "guide layer".
var myLayer = myDocument.layers.add({name:"guide layer"});
//Ajouter une série de repères à la page 1.
with(myDocument.pages.item(0)){
//Créer un repère sur le calque créé précédemment
myGuide = guides.add(myLayer, {orientation:HorizontalOrVertical.horizontal, location:"12p"});
//Méthode alternative pour créer un repère sur un calque spécifique.
myGuide = guides.add(undefined, {itemLayer:myLayer, orientation:HorizontalOrVertical.
horizontal, location:"14p"});
//Créer un repère verrouillé.
myGuide = guides.add(myLayer,{locked:true, orientation:HorizontalOrVertical.horizontal,
location:"16p"});
//Définir le seuil d’affichage d’un repère.
myGuide = guides.add(myLayer,{viewThreshold:100, orientation:HorizontalOrVertical.horizontal,
location:"18p"});
//Déterminer la couleur d’un repère à l’aide d’une constante UIColors.
myGuide = guides.add(myLayer,{guideColor:UIColors.gray, orientation:HorizontalOrVertical.
horizontal, location:"20p"});
//Déterminer la couleur d’un repère à l’aide d’un ensemble de valeurs RVB.
myGuide = guides.add(myLayer,{guideColor:[192, 192, 192], orientation:HorizontalOrVertical.
horizontal, location:"22p"});
}
Il est également possible de créer des repères à l’aide de la méthode createGuides des planches et des
planches types :
//CreateGuides.jsx
//JavaScript InDesign CS2
//Ajouter une série de repères à l’aide de la méthode de création de repères.
var myDocument = app.documents.add();
with (myDocument.spreads.item(0)){
//Paramètres (tous facultatifs) : row count, column count, row gutter (compte de ligne, compte
de colonne, gouttière de ligne),
//column gutter,guide color, fit margins, remove existing, layer (gouttière de colonne,
couleur de repère, marges ajustées, suppression, calque).
//Notez que cette méthode de création de repères n’accepte pas de valeurs RVB
//pour le paramètre de couleur de repère.
createGuides(4, 4, "1p", "1p", UIColors.gray, true, true, myDocument.layers.item(0));
}
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
Configuration des préférences de grille
Pour contrôler les propriétés du document et de la grille de ligne de base, définissez les propriétés de
l’objet gridPreferences comme dans le script ci-dessous :
//DocumentAndBaselineGrids.jsx
//JavaScript InDesign CS2
//Crée un document, puis définit les préférences de la
//grille de document et de la grille de ligne de base.
var myDocument = app.documents.add();
//Définir les unités de mesure du document en points.
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
//Configurer les préférences de grille.
with(myDocument.gridPreferences){
baselineStart = 56;
baselineDivision = 14;
baselineShown = true;
horizontalGridlineDivision = 14;
horizontalGridSubdivision = 5
verticalGridlineDivision = 14;
verticalGridSubdivision = 5
documentGridShown = true;
}
Magnétisme des repères et des grilles
La totalité des paramètres de magnétisme des grilles et des repères d’un document se trouve dans les
propriétés des objets guidePreferences et gridPreferences. Voici un exemple :
//GuideAndGridPreferences.jsx
//JavaScript InDesign CS2
//Définit les préférences des repères et des grilles
//Suppose que vous disposez d’un document ouvert.
var myDocument = app.activeDocument;
with(myDocument.guidePreferences){
guidesInBack = true;
guidesLocked = false;
guidesShown = true;
guidesSnapTo = true;
}
with(myDocument.gridPreferences){
documentGridShown = false;
documentGridSnapTo = true;
//Magnétisme de la grille de ligne de base actif pour les objets lorsque
//guidePreferences.guideSnapTo est défini sur true.
baselineGridShown = true;
}
Modification des unités de mesure et de la règle
Les exemples de scripts donnés jusqu’à présent faisaient appel à des chaînes de mesures, c’est à dire des
chaînes forçant InDesign à utiliser une unité de mesure spécifique, « 8,5 p » par exemple, pour 8,5 pouces.
Vous pourriez en effet utiliser un système de mesure différent lors de l’exécution du script.
Pour déterminer le système de mesures d’un script, utilisez l’objet viewPreferences :
//ViewPreferences.jsx
//JavaScript InDesign CS2
//Modifie les unités de mesure du document actif.
//Suppose que vous disposez d’un document ouvert.
var myDocument = app.activeDocument;
with(myDocument.viewPreferences){
//Les différentes unités de mesure possibles sont les suivantes :
//* MeasurementUnits.picas
//* MeasurementUnits.points
//* MeasurementUnits.inches
119
120
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
//* MeasurementUnits.inchesDecimal
//* MeasurementUnits.millimeters
//* MeasurementUnits.centimeters
//* MeasurementUnits.ciceros
//
//Définir les unités de mesure verticales et horizontales en points.
horizontalMeasurementUnits = MeasurementUnits.points;
verticalMeasurementUnits = MeasurementUnits.points;
}
Si vous écrivez un script qui requiert un système de mesure particulier, vous pouvez modifier les unités
de mesure au début du script, puis rétablir celles d’origine à la fin de celui-ci, comme dans l’exemple cidessous :
//ResetMeasurementUnits.jsx
//JavaScript InDesign CS2
//Modifie, puis rétablit les unités de mesure du document actif.
//Suppose que vous disposez d’un document ouvert.
var myDocument = app.activeDocument
with (myDocument.viewPreferences){
var myOldXUnits = horizontalMeasurementUnits;
var myOldYUnits = verticalMeasurementUnits;
horizontalMeasurementUnits = MeasurementUnits.points;
verticalMeasurementUnits = MeasurementUnits.points;
}
//A ce stade, vous pouvez exécuter une série quelconque d’actions de script dépendant des
//unités de mesure que vous avez définies. A la fin du
//script, rétablissez les unités de mesure à leur état d’origine.
with (myDocument.viewPreferences){
try{
horizontalMeasurementUnits = myOldXUnits;
verticalMeasurementUnits = myOldYUnits;
}
catch(myError){
alert("Could not reset custom measurement units.");
}
}
Définition et application des paramètres prédéfinis de document
Les paramètres prédéfinis de documents InDesign vous permettent de stocker et d’appliquer des
paramètres de configuration de document que vous utilisez souvent (format de page, marges, colonnes,
et zones de fond perdu et de ligne-bloc). Lorsque vous créez un document, vous pouvez baser celui-ci sur
un paramètre prédéfini de document.
Création d’un paramètre prédéfini par copie de valeurs
Pour créer un paramètre prédéfini de document à partir des paramètres d’un document existant, ouvrez
le document dont vous souhaitez copier les propriétés de configuration pour votre paramètre prédéfini,
puis exécutez le script suivant :
//DocumentPresetByExample.jsx
//JavaScript InDesign CS2
//Crée un paramètre prédéfini de document d’après la configuration du document actif.
//Suppose que vous disposez d’un document ouvert.
var myDocumentPreset;
if(app.documents.length > 0){
var myDocument = app.activeDocument;
//Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
myDocumentPreset = app.documentPresets.item("myDocumentPreset");
try {
var myPresetName = myDocumentPreset.name;
}
catch (myError){
myDocumentPreset = app.documentPresets.add({name:"myDocumentPreset"});
}
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
121
//Configurer les unités de mesure par défaut de l’application de manière à ce qu’elles
correspondent
//à celles du document.
app.viewPreferences.horizontalMeasurementUnits = myDocument.viewPreferences.horizontalMeasurem
entUnits;
app.viewPreferences.verticalMeasurementUnits = myDocument.viewPreferences.verticalMeasurementU
nits;
//Compléter les propriétés du paramètre prédéfini de document avec
//les propriétés correspondantes du document actif.
with(myDocumentPreset){
//Notez que le script suivant applique les préférences de marges
//du document ; pour appliquer les préférences de marges de la page active,
//remplacez "app.activeDocument" par "app.activeDocument" dans la
//ligne suivante (en supposant que la fenêtre active est une fenêtre de mise en page).
var myMarginPreferences = app.activeDocument.marginPreferences;
left = myMarginPreferences.left;
right = myMarginPreferences.right;
top = myMarginPreferences.top;
bottom = myMarginPreferences.bottom;
columnCount = myMarginPreferences.columnCount;
columnGutter = myMarginPreferences.columnGutter;
documentBleedBottom = app.activeDocument.documentPreferences.documentBleedBottomOffset;
documentBleedTop = app.activeDocument.documentPreferences.documentBleedTopOffset;
documentBleedLeft = app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset;
documentBleedRight = app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffs
et;
facingPages = app.activeDocument.documentPreferences.facingPages;
pageHeight = app.activeDocument.documentPreferences.pageHeight;
pageWidth = app.activeDocument.documentPreferences.pageWidth;
pageOrientation = app.activeDocument.documentPreferences.pageOrientation;
pagesPerDocument = app.activeDocument.documentPreferences.pagesPerDocument;
slugBottomOffset = app.activeDocument.documentPreferences.slugBottomOffset;
slugTopOffset = app.activeDocument.documentPreferences.slugTopOffset;
slugInsideOrLeftOffset = app.activeDocument.documentPreferences.slugInsideOrLeftOffset;
slugRightOrOutsideOffset = app.activeDocument.documentPreferences.slugRightOrOutsideOffset;
}
}
Création d’un paramètre prédéfini à partir de nouvelles valeurs
Pour créer un paramètre prédéfini de document avec des valeurs particulières, exécutez le script suivant :
//DocumentPreset.jsx
//JavaScript InDesign CS2
//Crée un paramètre prédéfini de document.
var myDocumentPreset;
//Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
myDocumentPreset = app.documentPresets.item("myDocumentPreset");
try {
var myPresetName = myDocumentPreset.name;
}
catch (myError){
myDocumentPreset = app.documentPresets.add({name:"myDocumentPreset"});
}
//Compléter les propriétés du paramètre prédéfini de document.
with(myDocumentPreset){
pageHeight = "9i";
pageWidth = "7i";
left = "4p";
right = "6p";
top = "4p";
bottom = "9p";
columnCount = 1;
documentBleedBottom = "3p";
documentBleedTop = "3p";
documentBleedLeft = "3p";
documentBleedRight = "3p";
facingPages = true;
pageOrientation = PageOrientation.portrait;
pagesPerDocument = 1;
slugBottomOffset = "18p";
122
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
slugTopOffset = "3p";
slugInsideOrLeftOffset = "3p";
slugRightOrOutsideOffset = "3p";
}
Utilisation d’un paramètre prédéfini
Pour créer un document à l’aide d’un paramètre prédéfini de document, utilisez le paramètre document
preset comme indiqué précédemment à la section « Création d’un nouveau document ».
Configuration des planches types
Après avoir défini le format de page, le fond perdu et la ligne-bloc du document de base, configurez les
planches types du document :
//MasterSpread.jsx
//JavaScript InDesign CS2
//Crée un document, puis indique comment configurer les propriétés de la planche type.
//Configurer la première planche type dans un nouveau document.
myDocument = app.documents.add();
//Set up the document.
with(myDocument.documentPreferences){
pageHeight = "11i"
pageWidth = "8.5i"
facingPages = true;
pageOrientation = PageOrientation.portrait;
}
//Définir le point d’origine de la règle à la page d’origine. Ceci est très important ;
//il est autrement plus difficile de placer
//correctement les objets sur la page.
myDocument.viewPreferences.rulerOrigin = RulerOrigin.pageOrigin;
with(myDocument.masterSpreads.item(0)){
//Configurer la page gauche (verso).
with(pages.item(0)){
with(marginPreferences){
columnCount = 3;
columnGutter = "1p";
bottom = "6p"
//« left » (gauche) signifie intérieur, « right » (droite) extérieur.
left = "6p"
right = "4p"
top = "4p"
}
//Ajouter un simple pied de page avec un numéro de section et un numéro de page.
with(textFrames.add()){
geometricBounds = ["61p", "4p", "62p", "45p"];
insertionPoints.item(0).contents = SpecialCharacters.sectionMarker;
insertionPoints.item(0).contents = SpecialCharacters.emSpace;
insertionPoints.item(0).contents = SpecialCharacters.autoPageNumber;
paragraphs.item(0).justification = Justification.leftAlign;
}
}
//Configurer la page droite (recto).
with(pages.item(1)){
with(marginPreferences){
columnCount = 3;
columnGutter = "1p";
bottom = "6p"
//« left » (gauche) signifie intérieur, « right » (droite) extérieur.
left = "6p"
right = "4p"
top = "4p"
}
//Ajouter un simple pied de page avec un numéro de section et un numéro de page.
with(textFrames.add()){
geometricBounds = ["61p", "6p", "62p", "47p"];
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
insertionPoints.item(0).contents
insertionPoints.item(0).contents
insertionPoints.item(0).contents
paragraphs.item(0).justification
=
=
=
=
SpecialCharacters.autoPageNumber;
SpecialCharacters.emSpace;
SpecialCharacters.sectionMarker;
Justification.rightAlign;
}
}
}
Pour appliquer une planche type à une page de document, utilisez la propriété de appliedMaster de la
page du document :
//ApplyMaster.jsx
//JavaScript InDesign CS2
//Applique une planche type à une page.
//Suppose que le document actif utilise un gabarit nommé "B-Master"
//et au moins trois pages ; la page 3 correspond à pages.item(2) car les tableaux JavaScript
démarrent à partir de zéro.
app.activeDocument.pages.item(2).appliedMaster = app.activeDocument.masterSpreads.item("BMaster");
Utilisez la même propriété pour appliquer une planche type à une page de planche type :
//ApplyMasterToMaster.jsx
//JavaScript InDesign CS2
//Applique une planche type à un gabarit.
//Suppose que le document actif utilise une planche type nommée "B-Master"
//différente de la première planche type du document.
app.activeDocument.masterSpreads.item(0).pages.item(0).appliedMaster = app.activeDocument.
masterSpreads.item("B-Master");
Définition des paramètres par défaut de mise en forme de texte
Vous pouvez définir les attributs par défaut de mise en forme de texte pour votre application ou pour
les documents individuels. Si vous définissez les paramètres par défaut de mise en forme de texte pour
l’application, ceux-ci s’appliquent à tous les nouveaux documents ; les documents existants ne changent
pas. Si vous définissez les paramètres par défaut de mise en forme de texte pour un document, ceux-ci
s’appliquent à tout nouveau texte que vous insérez dans le document ; le texte existant ne change pas.
Définition des paramètres de texte par défaut de l’application
Pour définir les paramètres de mise en forme de texte par défaut pour votre application :
//ApplicationTextDefaults.jsx
//JavaScript InDesign CS2
//Détermine les paramètres de texte par défaut de l’application, qui s’appliquent à tous
//les nouveaux documents. Les documents existants ne changent pas.
with(app.textDefaults){
alignToBaseline = true;
try{
appliedFont = app.fonts.item("Minion Pro");
}
catch(e){}
try{
fontStyle = "Regular";
}
catch(e){}
try{
appliedLanguage = "English: USA";
}
catch(e){}
autoLeading = 100;
balanceRaggedLines = false;
baselineShift = 0;
capitalization = Capitalization.normal;
composer = "Adobe Paragraph Composer";
desiredGlyphScaling = 100;
desiredLetterSpacing = 0;
123
124
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
desiredWordSpacing = 100;
dropCapCharacters = 0;
if(dropCapCharacters != 0){
dropCapLines = 3;
//Suppose que l’application utilise un style de caractère par défaut nommé "myDropCap"
dropCapStyle = app.characterStyles.item("myDropCap");
}
fillColor = app.colors.item("Black");
fillTint = 100;
firstLineIndent = "14pt";
gridAlignFirstLineOnly = false;
horizontalScale = 100;
hyphenateAfterFirst = 3;
hyphenateBeforeLast = 4;
hyphenateCapitalizedWords = false;
hyphenateLadderLimit = 1;
hyphenateWordsLongerThan = 5;
hyphenation = true;
hyphenationZone = "3p";
hyphenWeight = 9;
justification = Justification.leftAlign;
keepAllLinesTogether = false;
keepLinesTogether = true;
keepFirstLines = 2;
keepLastLines = 2;
keepWithNext = 0;
kerningMethod = "Optical";
kerningValue = 0;
leading = 14;
leftIndent = 0;
ligatures = true;
maximumGlyphScaling = 100;
maximumLetterSpacing = 0;
maximumWordSpacing = 160;
minimumGlyphScaling = 100;
minimumLetterSpacing = 0;
minimumWordSpacing = 80;
noBreak = false;
otfContextualAlternate = true;
otfDiscretionaryLigature = true;
otfFigureStyle = OTFFigureStyle.proportionalOldstyle;
otfFraction = true;
otfHistorical = true;
otfOrdinal = false;
otfSlashedZero = true;
otfSwash = false;
otfTitling = false;
overprintFill = false;
overprintStroke = false;
pointSize = 11;
position = Position.normal;
rightIndent = 0;
ruleAbove = false;
if(ruleAbove == true){
ruleAboveColor = app.colors.item("Black");
ruleAboveGapColor = app.swatches.item("None");
ruleAboveGapOverprint = false;
ruleAboveGapTint = 100;
ruleAboveLeftIndent = 0;
ruleAboveLineWeight = .25;
ruleAboveOffset = 14;
ruleAboveOverprint = false;
ruleAboveRightIndent = 0;
ruleAboveTint = 100;
ruleAboveType = app.strokeStyles.item("Solid");
ruleAboveWidth = RuleWidth.columnWidth;
}
ruleBelow = false;
if(ruleBelow == true){
ruleBelowColor = app.colors.item("Black");
ruleBelowGapColor = app.swatches.item("None");
ruleBelowGapOverprint = false;
ruleBelowGapTint = 100;
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
125
ruleBelowLeftIndent = 0;
ruleBelowLineWeight = .25;
ruleBelowOffset = 0;
ruleBelowOverprint = false;
ruleBelowRightIndent = 0;
ruleBelowTint = 100;
ruleBelowType = app.strokeStyles.item("Solid");
ruleBelowWidth = RuleWidth.columnWidth;
}
singleWordJustification = SingleWordJustification.leftAlign;
skew = 0;
spaceAfter = 0;
spaceBefore = 0;
startParagraph = StartParagraph.anywhere;
strikeThru = false;
if(strikeThru == true){
strikeThroughColor = app.colors.item("Black");
strikeThroughGapColor = app.swatches.item("None");
strikeThroughGapOverprint = false;
strikeThroughGapTint = 100;
strikeThroughOffset = 3;
strikeThroughOverprint = false;
strikeThroughTint = 100;
strikeThroughType = app.strokeStyles.item("Solid");
strikeThroughWeight = .25;
}
strokeColor = app.swatches.item("None");
strokeTint = 100;
strokeWeight = 0;
tracking = 0;
underline = false;
if(underline == true){
underlineColor = app.colors.item("Black");
underlineGapColor = app.swatches.item("None");
underlineGapOverprint = false;
underlineGapTint = 100;
underlineOffset = 3;
underlineOverprint = false;
underlineTint = 100;
underlineType = app.strokeStyles.item("Solid");
underlineWeight = .25
}
verticalScale = 100;
}
Configuration des paramètres par défaut du document actif
Pour définir les paramètres de texte par défaut pour le document actif, remplacez la ligne suivante dans
l’exemple donné précédemment :
with(app.textDefaults){
par :
with(app.activeDocument.textDefaults){
Utilisation des paramètres de texte par défaut
Pour appliquer un style de caractère ou de paragraphe par défaut à du texte dans un document, utilisez le
script suivant :
//SetTextDefaultToStyle.jsx
//JavaScript InDesign CS2
//Suppose l’existence d’un style de paragraphe nommé "BodyText" dans le document actif.
with(app.activeDocument.textDefaults){
appliedParagraphStyle = app.activeDocument.paragraphStyles.item("BodyText");
}
126
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
Ajout de métadonnées XMP
Les métadonnées sont des informations qui permettent de décrire le contenu, l’origine ainsi que d’autres
attributs d’un fichier. Dans l’interface utilisateur d’InDesign, vous pouvez saisir, modifier ou afficher des
métadonnées grâce à la boîte de dialogue Informations (Fichier > Informations). Ces métadonnées
comprennent l’auteur, l’état du copyright et les dates de création et de modification du document, ainsi
que d’autres informations. Toutes ces données sont stockées au format XMP (Adobe Extensible Metadata
Platform), une norme ouverte qui permet d’incorporer des métadonnées dans un document.
Pour plus de détails sur le format XMP, consultez les spécifications XMP, à l’adresse suivante :
http://partners.adobe.com/asn/developer/pdf/MetadataFramework.pdf.
Vous pouvez également ajouter des informations XMP à un document en utilisant un script InDesign.
Toutes les propriétés XMP d’un document se trouvent dans l’objet metadataPreferences
(préférences des métadonnées) du document. L’exemple de script suivant permet de compléter
les données XMP d’un document.
Cet exemple montre également que les informations XMP sont extensibles. Si vous devez joindre des
métadonnées à un document mais que celles-ci ne rentrent pas dans l’une des catégories de l’objet
préférences des métadonnées, vous pouvez créer votre propre conteneur de métadonnées (un e-mail,
dans cet exemple) :
//MetadataExample.jsx
//JavaScript InDesign CS2
//Ajoute des métadonnées à un document exemple.
var myDocument = app.documents.add();
with (myDocument.metadataPreferences){
author = "Olav Martin Kvern";
copyrightInfoURL = "http://www.adobe.com";
copyrightNotice = "This document is copyrighted.";
copyrightStatus = CopyrightStatus.yes;
description = "Example of xmp metadata scripting in InDesign CS";
documentTitle = "XMP Example";
jobName = "XMP_Example_2003";
keywords = ["animal", "mineral", "vegetable"];
//L’objet préférences des métadonnées comprend également les informations relatives à la
lecture seule
//au créateur, au format, aux dates de création et de modification, ainsi qu’aux propriétés
serverURL,
//entrées et conservées automatiquement par InDesign.
//Créer un conteneur XMP personnalisé, "email"
var myNewContainer = createContainerItem("http://ns.adobe.com/xap/1.0/", "email");
setProperty("http://ns.adobe.com/xap/1.0/", "email/*[1]", "[email protected]");
}
Création d’un modèle de document
L’exemple suivant permet de créer un document, de déterminer les zones de fond perdu et de ligne-bloc,
d’ajouter des informations aux métadonnées XMP du document, de configurer des gabarits, d’insérer des
pieds de pages ainsi que des informations sur le travail dans un tableau à l’intérieur de la zone de lignebloc :
//DocumentTemplate.jsx
//JavaScript InDesign CS2
//Crée un modèle de document, comprenant des gabarits, des calques, une couleur,
//des styles de paragraphe et de caractère, des repères et des informations XMP.
//Définir les préférences de marges par défaut de l’application.
with (app.marginPreferences){
//Enregistrer les préférences de marges par défaut actuelles de l’application.
var myY1 = top;
var myX1 = left;
var myY2 = bottom;
var myX2 = right;
//Définir les préférences de marges par défaut de l’application.
//La grille de ligne de base du document est définie sur 14 points, et
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
//toutes les marges sont définies par incréments de 14 points.
top = 14 * 4 + "pt";
left = 14 * 4 + "pt";
bottom = "74pt";
right = 14 * 5 + "pt";
}
//Créer un document.
var myDocument = app.documents.add();
myDocument.documentPreferences.pageWidth = "7i";
myDocument.documentPreferences.pageHeight = "9i";
myDocument.documentPreferences.pageOrientation = PageOrientation.portrait;
//A ce stade, vous pouvez rétablir les marges par défaut de l’application
//à leur état d’origine.
with (app.marginPreferences){
top = myY1;
left = myX1;
bottom = myY2;
right = myX2;
}
//Configurer les zones de fond perdu et de ligne-bloc.
with(myDocument.documentPreferences){
//Fond perdu
documentBleedBottomOffset = "3p";
documentBleedTopOffset = "3p";
documentBleedInsideOrLeftOffset = "3p";
documentBleedOutsideOrRightOffset = "3p";
//Ligne-bloc
slugBottomOffset = "18p";
slugTopOffset = "3p";
slugInsideOrLeftOffset = "3p";
slugRightOrOutsideOffset = "3p";
}
//Définir une couleur.
try{
myDocument.colors.item("PageNumberRed").name;
}
catch (myError){
myDocument.colors.add({name:"PageNumberRed", model:ColorModel.process, colorValue:[20, 100,
80, 10]});
}
//Indiquer ensuite des styles par défaut.
//Créer un style de caractère pour les numéros de pages.
try{
myDocument.characterStyles.item("page_number").name;
}
catch (myError){
myDocument.characterStyles.add({name:"page_number"});
}
myDocument.characterStyles.item("page_number").fillColor = myDocument.colors.
item("PageNumberRed");
//Créer une paire de styles de paragraphe pour le texte de pied de page.
//Ces styles appliquent une mise en page élémentaire.
try{
myDocument.paragraphStyles.item("footer_left").name;
}
catch (myError){
myDocument.paragraphStyles.add({name:"footer_left", pointSize:11, leading:14});
}
//Créer une paire de styles de paragraphe pour le texte de pied de page.
try{
myDocument.paragraphStyles.item("footer_right").name;
}
catch (myError){
myDocument.paragraphStyles.add({name:"footer_right", basedOn:myDocument.paragraphStyles.
item("footer_left"), justification:Justification.rightAlign, pointSize:11, leading:14});
}
//Créer un calque pour les repères.
try{
myDocument.layers.item("GuideLayer").name;
}
catch (myError){
myDocument.layers.add({name:"GuideLayer"});
}
127
128
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
//Créer un calque pour les éléments de pied de page.
try{
myDocument.layers.item("Footer").name;
}
catch (myError){
myDocument.layers.add({name:"Footer"});
}
//Créer un calque pour les éléments de ligne-bloc.
try{
myDocument.layers.item("Slug").name;
}
catch (myError){
myDocument.layers.add({name:"Slug"});
}
//Créer un calque pour le corps de texte.
try{
myDocument.layers.item("BodyText").name;
}
catch (myError){
myDocument.layers.add({name:"BodyText"});
}
with(myDocument.viewPreferences){
rulerOrigin = RulerOrigin.pageOrigin;
horizontalMeasurementUnits = MeasurementUnits.points;
verticalMeasurementUnits = MeasurementUnits.points;
}
//Grille de ligne de base du document et grille du document
with(myDocument.gridPreferences){
baselineStart = 56;
baselineDivision = 14;
baselineShown = false;
horizontalGridlineDivision = 14;
horizontalGridSubdivision = 5
verticalGridlineDivision = 14;
verticalGridSubdivision = 5
documentGridShown = false;
}
//Informations XMP du document.
with (myDocument.metadataPreferences){
author = "Olav Martin Kvern";
copyrightInfoURL = "http://www.adobe.com";
copyrightNotice = "This document is not copyrighted.";
copyrightStatus = CopyrightStatus.no;
description = "Example 7 x 9 book layout";
documentTitle = "Example";
jobName = "7 x 9 book layout template";
keywords = ["7 x 9", "book", "template"];
var myNewContainer = createContainerItem("http://ns.adobe.com/xap/1.0/", "email");
setProperty("http://ns.adobe.com/xap/1.0/", "email/*[1]", "[email protected]");
}
//Configurer la planche type.
with(myDocument.masterSpreads.item(0)){
with(pages.item(0)){
//La gauche et la droite sont inversées pour les pages de gauche (devenant « intérieur » et
« extérieur » ;
//valable également dans l’interface utilisateur InDesign).
var myBottomMargin = myDocument.documentPreferences.pageHeight - marginPreferences.bottom;
var myRightMargin = myDocument.documentPreferences.pageWidth - marginPreferences.left;
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
vertical,location:marginPreferences.right});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
vertical, location:myRightMargin});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
horizontal, location:marginPreferences.top, fitToPage:false});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
horizontal, location:myBottomMargin, fitToPage:false});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
horizontal, location:myBottomMargin + 14, fitToPage:false});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
horizontal, location:myBottomMargin + 28, fitToPage:false});
var myLeftFooter = textFrames.add(myDocument.layers.item("Footer"), undefined, undefined, {
geometricBounds:[myBottomMargin+14, marginPreferences.right, myBottomMargin+28, myRightMargin]})
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
129
myLeftFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.
sectionMarker;
myLeftFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.emSpace;
myLeftFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.
autoPageNumber;
myLeftFooter.parentStory.characters.item(0).appliedCharacterStyle = myDocument.
characterStyles.item("page_number");
myLeftFooter.parentStory.paragraphs.item(0).applyStyle(myDocument.paragraphStyles.
item("footer_left", false));
//Informations sur la ligne-bloc.
with(myDocument.metadataPreferences){
var myString = "Author:\t" + author + "\tDescription:\t" + description + "\rCreation
Date:\t" + new Date +
"\tEmail Contact\t" + getProperty("http://ns.adobe.com/xap/1.0/", "email/*[1]");
}
var myLeftSlug = textFrames.add(myDocument.layers.item("Slug"), undefined, undefined, {geom
etricBounds:[myDocument.documentPreferences.pageHeight+36, marginPreferences.right, myDocument.
documentPreferences.pageHeight + 144, myRightMargin], contents:myString});
myLeftSlug.parentStory.tables.add();
//Bloc de texte type du corps de texte.
var myLeftFrame = textFrames.add(myDocument.layers.item("BodyText"), undefined,
undefined, {geometricBounds:[marginPreferences.top, marginPreferences.right, myBottomMargin,
myRightMargin]});
}
with(pages.item(1)){
var myBottomMargin = myDocument.documentPreferences.pageHeight - marginPreferences.bottom;
var myRightMargin = myDocument.documentPreferences.pageWidth - marginPreferences.right;
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
vertical,location:marginPreferences.left});
guides.add(myDocument.layers.item("GuideLayer"), {orientation:HorizontalOrVertical.
vertical, location:myRightMargin});
var myRightFooter = textFrames.add(myDocument.layers.item("Footer"), undefined, undefined,
{geometricBounds:[myBottomMargin+14, marginPreferences.left, myBottomMargin+28, myRightMargin]})
myRightFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.
autoPageNumber;
myRightFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.emSpace;
myRightFooter.parentStory.insertionPoints.item(0).contents = SpecialCharacters.
sectionMarker;
myRightFooter.parentStory.characters.item(-1).appliedCharacterStyle = myDocument.
characterStyles.item("page_number");
myRightFooter.parentStory.paragraphs.item(0).applyStyle(myDocument.paragraphStyles.
item("footer_right", false));
//Informations sur la ligne-bloc.
var myRightSlug = textFrames.add(myDocument.layers.item("Slug"), undefined, undefined, {geo
metricBounds:[myDocument.documentPreferences.pageHeight+36, marginPreferences.left, myDocument.
documentPreferences.pageHeight + 144, myRightMargin], contents:myString});
myRightSlug.parentStory.tables.add();
//Bloc de texte type du corps de texte.
var myRightFrame = textFrames.add(myDocument.layers.item("BodyText"), undefined, undefined,
{geometricBounds:[marginPreferences.top, marginPreferences.left, myBottomMargin, myRightMargin],
previousTextFrame:myLeftFrame});
}
}
//Insérer un texte de marque de section ; celui-ci apparaîtra dans le pied de page.
myDocument.sections.item(0).marker = "Section 1";
//Lorsque vous liez les blocs de texte du gabarit, l’un d’entre eux est parfois sélectionné.
Désélectionnez-le.
app.select(NothingEnum.nothing, undefined);
Impression d’un document
Le script suivant permet d’imprimer le document actif à l’aide des préférences d’impression actuelles :
//PrintDocument.jsx
//JavaScript InDesign CS2
//Imprime le document actif.
app.activeDocument.print();
130
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
Impression à l’aide de groupes de pages
Pour définir un groupe de pages à imprimer, configurez la propriété pageRange dans l’objet
printPreferences du document avant d’imprimer :
//PrintPageRange.jsx
//JavaScript InDesign CS2
//Imprime un groupe de pages depuis le document actif.
//Suppose que vous disposez d’un document ouvert, et que celui-ci contient une page
nommée « 22 ».
//Le groupe de pages peut être constitué de PageRange.allPages (toutes les pages) ou d’une
chaîne de groupe de pages.
//Un numéro de page saisi dans le groupe de pages doit correspondre à un
//nom de page dans le document (et non à l’indice de page, par exemple). Si le nom de page n’est
//pas trouvé, InDesign affiche un message d’erreur.
app.activeDocument.printPreferences.pageRange = "22"
app.activeDocument.print(false);
Configuration des préférences d’impression
L’objet printPreferences comprend des propriétés correspondant aux options des volets de la boîte
de dialogue d’impression. Cet exemple de script indique comment définir les préférences d’impression à
l’aide d’un script :
//PrintPreferences.jsx
//JavaScript InDesign CS2
//Définit les préférences d’impression du document actif.
with(app.activeDocument.printPreferences){
//Propriétés correspondant aux commandes du volet Général
//de la boîte de dialogue d’impression. activePrinterPreset est ignoré dans cet
//exemple ; spécifiez vos préférences d’impression. L’imprimante peut être
//soit une chaîne (le nom de l’imprimante), soit Printer.postscriptFile (un fichier
Postscript).
printer = "AGFA-SelectSet 5000SF v2013.108";
//Si la propriété de l’imprimante correspond au nom d’une imprimante, alors la propriété du
ppd
//est verrouillée (entraînant un message d’erreur si vous essayez de la configurer).
//ppd = "AGFA-SelectSet5000SF";
//Si la propriété de l’imprimante indique un fichier Postscript, la propriété
//la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez de la
configurer.
copies = 1;
//Si la propriété de l’imprimante indique un fichier Printer.postscript, ou si
//l’imprimante sélectionnée ne prend pas en charge l’assemblage, alors
//la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez de la
configurer.
//collating = false;
reverseOrder = false;
//Le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de
pages.
pageRange = PageRange.allPages;
printSpreads = false;
printMasterPages = false;
//Si la propriété de l’imprimante indique un fichier Printer.postScript, alors
//la propriété du fichier d’impression comprend le chemin du fichier de sortie.
//printFile = "/c/test.ps";
sequence = Sequences.all;
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Sortie de la
//boîte de dialogue d’impression.
//-------------------------------------------------------------------------------negative = true;
colorOutput = ColorOutputModes.separations;
//Remarquez le « i » minuscule dans « Builtin »
trapping = Trapping.applicationBuiltin;
screening = "175 lpi/2400 dpi";
flip = Flip.none;
//Si le recouvrement est activé, une erreur se produit
//la configuration des propriétés suivantes entraînera une erreur :
if(trapping == Trapping.off){
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
131
printBlack = true;
printCyan = true;
printMagenta = true;
printYellow = true;
}
//Ne modifiez que l’angle de projection de l’encre et la fréquence si vous souhaitez remplacer
//le tramage par celui spécifié par la propriété de tramage.
//blackAngle = 45;
//blackFrequency = 175;
//cyanAngle = 15;
//cyanFrequency = 175;
//magentaAngle = 75;
//magentaFreqency = 175;
//yellowAngle = 0;
//yellowFrequency = 175;
//Les propriétés suivantes ne sont pas nécessaires (car colorOutput est
//définie sur séparations).
//compositeAngle = 45;
//compositeFrequency = 175;
//simulateOverprint = false;
//Si le recouvrement est activé, une erreur se produira si vous configurez les propriétés
suivantes :
if(trapping == Trapping.off){
printBlankPages = false;
printGuidesGrids = false;
printNonprinting = false;
}
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Format de la
//boîte de dialogue d’impression.
//-------------------------------------------------------------------------------paperSize = PaperSizes.custom;
//La largeur et la hauteur de page sont ignorées si le format du papier n’est pas
personnalisé.
//paperHeight = 1200;
//paperWidth = 1200;
printPageOrientation = PrintPageOrientation.portrait;
pagePosition = PagePositions.centered;
paperGap = 0;
paperOffset = 0;
paperTransverse = false;
scaleHeight = 100;
scaleWidth = 100;
scaleMode = ScaleModes.scaleWidthHeight;
scaleProportional = true;
//Si le recouvrement est activé, une erreur se produit
//lorsque vous essayez de configurer les propriétés suivantes :
if(trapping == Trapping.off){
textAsBlack = false;
thumbnails = false;
//Les propriétés suivantes ne sont pas nécessaires, car la valeur false est attribuée aux
vignettes.
//thumbnailsPerPage = 4;
tile = false;
//Les propriétés suivantes ne sont pas nécessaires, car la valeur false est attribuée à la
mosaïque.
//tilingOverlap = 12;
//tilingType = TilingTypes.auto;
}
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Repères et fonds perdus de
//la boîte de dialogue d’impression.
//-------------------------------------------------------------------------------//Attribuer la valeur true aux propriétés suivantes pour imprimer tous les repères
d’impression :
//allPrinterMarks = true;
useDocumentBleedToPrint = false;
//Si l’utilisation du fond perdu pour l’impression est désactivée, alors la configuration de
l’une des propriétés de fond perdu
//entraînera une erreur.
//Extraire les valeurs du fond perdu du document et les augmenter.
132
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
bleedBottom = app.activeDocument.documentPreferences.documentBleedBottomOffset+3;
bleedTop = app.activeDocument.documentPreferences.documentBleedTopOffset+3;
bleedInside = app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset+3;
bleedOutside = app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffset+3;
//Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères de
marge.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 && bleedOutside == 0){
bleedMarks = true;
}
else{
bleedMarks = false;
}
colorBars = true;
cropMarks = true;
includeSlugToPrint = false;
markLineWeight = MarkLineWeight.p125pt
markOffset = 6;
//markType = MarkTypes.default;
pageInformationMarks = true;
registrationMarks = true;
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Graphiques de la
//boîte de dialogue d’impression.
//-------------------------------------------------------------------------------sendImageData = ImageDataTypes.allImageData;
fontDownloading = FontDownloading.complete;
downloadPPDFOnts = true;
try{
dataFormat = DataFormat.binary;
}
catch(e){}
try{
postScriptLevel = PostScriptLevels.level3;
}
catch(e){}
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Gestion des couleurs de
//la boîte de dialogue d’impression.
//-------------------------------------------------------------------------------//Si la valeur false est attribuée à la propriété useColorManagement dans app.colorSettings,
//une erreur se produit si vous essayez de configurer les propriétés suivantes :
try{
sourceSpace = SourceSpaces.useDocument;
intent = RenderingIntent.useColorSettings;
crd = ColorRenderingDictionary.useDocument;
profile = Profile.postscriptCMS;
}
catch(e){}
//-------------------------------------------------------------------------------//Propriétés correspondant aux commandes du volet Avancé de la
//boîte de dialogue d’impression.
//-------------------------------------------------------------------------------opiImageReplacement = false;
omitBitmaps = false;
omitEPS = false;
omitPDF = false;
//L’instruction suivante suppose l’existence d’un aplatissement prédéfini nommé "high quality
flattener".
try{
flattenerPresetName = "high quality flattener";
}
catch(e){}
ignoreSpreadOverrides = false;
}
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
Utilisation des impressions prédéfinies
Pour imprimer un document à l’aide d’une impression prédéfinie, insérez celle-ci dans la méthode
d’impression :
//PrintDocumentWithPreset.jsx
//JavaScript InDesign CS2
//Imprime le document actif à l’aide de l’impression prédéfinie indiquée.
//Suppose l’existence d’une impression prédéfinie nommée "myPrintPreset" et d’un document
ouvert.
app.activeDocument.print(false, app.printerPresets.item("myPreset"));
Création d’impressions prédéfinies à partir des préférences d’impression
Pour créer une impression prédéfinie à partir des préférences d’impression d’un document :
//CreatePrinterPreset.jsx
//JavaScript InDesign CS2
//Crée une impression prédéfinie.
//Si le paramètre prédéfini n’existe pas, créez-le ;
//sinon, renseignez les propriétés du paramètre prédéfini existant.
var myPreset;
myPreset = app.printerPresets.item("myPreset");
try{
myPreset.name;
}
catch(myError){
myPreset = app.printerPresets.add({name:"myPreset"});
}
with(app.activeDocument.printPreferences){
//Le nombre de propriétés d’impression découlant d’autres propriétés d’impression,
//chaque ligne relative à la configuration d’une propriété est encadrée des instructions
try...catch,
//de manière à faciliter l’appréhension de la configuration des impressions prédéfinies.
try{
myPreset.printer = printer;
}
catch(e){}
try{
myPreset.ppd = ppd;
}
catch(e){}
try{
myPreset.copies = copies;
}
catch(e){}
try{
myPreset.collating = collating;
}
catch(e){}
try{
myPreset.reverseOrder = reverseOrder;
}
catch(e){}
try{
myPreset.pageRange = pageRange;
}
catch(e){}
try{
myPreset.printSpreads = printSpreads;
}
catch(e){}
try{
myPreset.printMasterPages = printMasterPages;
}
catch(e){}
try{
myPreset.printFile = printFile;
}
catch(e){}
try{
133
134
Utilisation de documents dans JavaScript
myPreset.sequence = sequence;
}
catch(e){}
try{
myPreset.printBlankPages = printBlankPages;
}
catch(e){}
try{
myPreset.printGuidesGrids = printGuidesGrids;
}
catch(e){}
try{
myPreset.printNonprinting = printNonprinting;
}
catch(e){}
try{
myPreset.paperSize = paperSize;
}
catch(e){}
try{
myPreset.paperHeight = paperHeight;
}
catch(e){}
try{
myPreset.paperWidth = paperWidth;
}
catch(e){}
try{
myPreset.printPageOrientation = printPageOrientation;
}
catch(e){}
try{
myPreset.pagePosition = pagePosition;
}
catch(e){}
try{
myPreset.paperGap = paperGap;
}
catch(e){}
try{
myPreset.paperOffset = paperOffset;
}
catch(e){}
try{
myPreset.paperTransverse = paperTransverse;
}
catch(e){}
try{
myPreset.scaleHeight = scaleHeight;
}
catch(e){}
try{
myPreset.scaleWidth = scaleWidth;
}
catch(e){}
try{
myPreset.scaleMode = scaleMode;
}
catch(e){}
try{
myPreset.scaleProportional = scaleProportional;
}
catch(e){}
try{
myPreset.textAsBlack = textAsBlack;
}
catch(e){}
try{
myPreset.thumbnails = thumbnails;
}
catch(e){}
try{
myPreset.thumbnailsPerPage = thumbnailsPerPage;
Adobe InDesign CS2 Guide des scripts
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
}
catch(e){}
try{
myPreset.tile = tile;
}
catch(e){}
try{
myPreset.tilingType = tilingType;
}
catch(e){}
try{
myPreset.tilingOverlap = tilingOverlap;
}
catch(e){}
try{
myPreset.allPrinterMarks = allPrinterMarks;
}
catch(e){}
try{
myPreset.useDocumentBleedToPrint = useDocumentBleedToPrint;
}
catch(e){}
try{
myPreset.bleedBottom = bleedBottom;
}
catch(e){}
try{
myPreset.bleedTop = bleedTop;
}
catch(e){}
try{
myPreset.bleedInside = bleedInside;
}
catch(e){}
try{
myPreset.bleedOutside = bleedOutside;
}
catch(e){}
try{
myPreset.bleedMarks = bleedMarks;
}
catch(e){}
try{
myPreset.colorBars = colorBars;
}
catch(e){}
try{
myPreset.cropMarks = cropMarks;
}
catch(e){}
try{
myPreset.includeSlugToPrint = includeSlugToPrint;
}
catch(e){}
try{
myPreset.markLineWeight = markLineWeight;
}
catch(e){}
try{
myPreset.markOffset = markOffset;
}
catch(e){}
try{
myPreset.markType = markType;
}
catch(e){}
try{
myPreset.pageInformationMarks = pageInformationMarks;
}
catch(e){}
try{
myPreset.registrationMarks = registrationMarks;
}
135
136
Utilisation de documents dans JavaScript
catch(e){}
try{
myPreset.negative = negative;
}
catch(e){}
try{
myPreset.colorOutput = colorOutput ;
}
catch(e){}
try{
myPreset.trapping = trapping;
}
catch(e){}
try{
myPreset.screening = screening;
}
catch(e){}
try{
myPreset.flip = flip;
}
catch(e){}
try{
myPreset.printBlack = printBlack;
}
catch(e){}
try{
myPreset.printCyan = printCyan;
}
catch(e){}
try{
myPreset.printMagenta = printMagenta;
}
catch(e){}
try{
myPreset.printYellow = printYellow;
}
catch(e){}
try{
myPreset.blackAngle = blackAngle;
}
catch(e){}
try{
myPreset.blackFrequency = blackFrequency;
}
catch(e){}
try{
myPreset.cyanAngle = cyanAngle;
}
catch(e){}
try{
myPreset.cyanFrequency = cyanFrequency;
}
catch(e){}
try{
myPreset.magentaAngle = magentaAngle;
}
catch(e){}
try{
myPreset.magentaFreqency = magentaFreqency;
}
catch(e){}
try{
myPreset.yellowAngle = yellowAngle;
}
catch(e){}
try{
myPreset.yellowFrequency = yellowFrequency;
}
catch(e){}
try{
myPreset.compositeAngle = compositeAngle;
}
catch(e){}
Adobe InDesign CS2 Guide des scripts
Adobe InDesign CS2 Guide des scripts
try{
myPreset.compositeFrequency = compositeFrequency;
}
catch(e){}
try{
myPreset.simulateOverprint = simulateOverprint;
}
catch(e){}
try{
myPreset.sendImageData = sendImageData;
}
catch(e){}
try{
myPreset.fontDownloading = fontDownloading;
}
catch(e){}
try{
myPreset.downloadPPDFOnts = downloadPPDFOnts;
}
catch(e){}
try{
myPreset.dataFormat = dataFormat;
}
catch(e){}
try{
myPreset.postScriptLevel = postscriptLevel;
}
catch(e){}
try{
myPreset.sourceSpace = sourceSpace;
}
catch(e){}
try{
myPreset.intent = intent;
}
catch(e){}
try{
myPreset.crd = crd;
}
catch(e){}
try{
myPreset.profile = profile;
}
catch(e){}
try{
myPreset.opiImageReplacement = opiImageReplacement;
}
catch(e){}
try{
myPreset.omitBitmaps = omitBitmaps;
}
catch(e){}
try{
myPreset.omitEPS = omitEPS;
}
catch(e){}
try{
myPreset.omitPDF = omitPDF;
}
catch(e){}
try{
myPreset.flattenerPresetName = flattenerPresetName ;
}
catch(e){}
try{
myPreset.ignoreSpreadOverrides = ignoreSpreadOverrides;
}
catch(e){}
alert("Done!");
}
Utilisation de documents dans JavaScript
137
138
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
Exportation d’un document au format PDF
Le script InDesign permet de gérer entièrement la création de fichiers PDF depuis vos documents de mise
en page.
Utilisation des options d’exportation PDF actuelles
Le script suivant permet d’exporter le document actif au format PDF à l’aide d’un paramètre prédéfini
d’exportation PDF :
//ExportPDF.jsx
//JavaScript InDesign CS2
//Suppose que vous disposez d’un document ouvert et que vous avez défini un paramètre prédéfini
d’exportation PDF
//nommé "prepress".
//Les paramètres d’exportation du document sont les suivants :
//Format de fichier (format as) - utilisez l’énumération ExportFormat.pdfType
//ou la chaîne « Adobe PDF » ;
//fichier de destination (to)
//options d’affichage booléennes - la valeur true permet l’affichage de la
//boîte de dialogue d’exportation PDF.
//Utiliser comme paramètre prédéfini d’exportation PDF (ou une chaîne correspondant au nom d’un
//paramètre prédéfini d’exportation PDF)
var myPDFExportPreset = app.pdfExportPresets.item("prepress");
app.activeDocument.exportFile(ExportFormat.pdfType, File("/c/myTestDocument.pdf"), false,
myPDFExportPreset);
Configuration des options d’exportation PDF et exportation de pages
individuelles
L’exemple suivant permet de configurer les options d’exportation PDF avant l’exportation :
//ExportEachPageAsPDF.jsx
//JavaScript InDesign CS2
//Exporte chaque page d’un document InDesign CS en tant que fichier PDF individuel dans
//un dossier sélectionné, à l’aide des paramètres d’exportation PDF actuels.
//Afficher une boîte de dialogue "choose folder".
if(app.documents.length != 0){
var myFolder = Folder.selectDialog ("Choose a Folder");
if(myFolder != null){
myExportPages(myFolder);
}
}
else{
alert("Please open a document and try again.");
}
function myExportPages(myFolder){
var myPageName, myFilePath, myFile;
var myDocument = app.activeDocument;
var myDocumentName = myDocument.name;
var myDialog = app.dialogs.add();
with(myDialog.dialogColumns.add().dialogRows.add()){
staticTexts.add({staticLabel:"Base name:"});
var myBaseNameField = textEditboxes.add({editContents:myDocumentName, minWidth:160});
}
var myResult = myDialog.show({name:"ExportPages"});
if(myResult == true){
var myBaseName = myBaseNameField.editContents;
//Supprimer la boîte de dialogue de la mémoire.
myDialog.destroy();
for(var myCounter = 0; myCounter < myDocument.pages.length; myCounter++){
myPageName = myDocument.pages.item(myCounter).name;
app.pdfExportPreferences.pageRange = myPageName;
//Le nom des fichiers exportés est composé du nom de base + le
//nom de la page + « .pdf ».
//Si le nom de la page contient le caractère deux-points (ce qui est le cas si le
document
//comprend des sections),
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
139
//supprimez-le.
var myRegExp = new RegExp(":","gi");
myPageName = myPageName.replace(myRegExp, "_");
myFilePath = myFolder + "/" + myBaseName + "_" + myPageName + ".pdf";
myFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myFile, false);
}
}
else{
myDialog.destroy();
}
}
L’exemple suivant indique un jeu de préférences d’exportation PDF (ce jeu n’est pas complet ; les fonctions
de sécurité ne sont pas modifiées) :
//ExportPDFWithOptions.jsx
//JavaScript InDesign CS2
//Définit les options d’exportation PDF, puis exporte le document actif au format PDF.
with(app.pdfExportPreferences){
//Options de sortie PDF standard.
pageRange = PageRange.allPages;
acrobatCompatibility = AcrobatCompatibility.acrobat6;
exportGuidesAndGrids = false;
exportLayers = false;
exportNonPrintingObjects = false;
exportReaderSpreads = false;
generateThumbnails = false;
try{
ignoreSpreadOverrides = false;
}
catch(e){}
includeBookmarks = true;
includeHyperlinks = true;
includeICCProfiles = true;
includeSlugWithPDF = false;
includeStructure = false;
interactiveElements = false;
//Attribuer la valeur zéro à l’option jeu partiel des polices au-dessous de désactive le jeu
partiel des polices ;
//attribuez une autre valeur pour utiliser le jeu partiel des polices.
subsetFontsBelow = 0;
//
//Options de qualité/échantillonnage/compression Bitmap.
colorBitmapCompression = BitmapCompression.zip;
colorBitmapQuality = CompressionQuality.eightBit;
colorBitmapSampling = Sampling.none;
//Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs dans le présent
exemple.
//Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap couleurs
lorsque celui-ci n’est pas activé (none).
grayscaleBitmapCompression = BitmapCompression.zip;
grayscaleBitmapQuality = CompressionQuality.eightBit;
grayscaleBitmapSampling = Sampling.none;
//Il n’est pas nécessaire d’indiquer un seuil de compression des niveaux de gris dans cet
exemple.
//Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap en niveaux
de gris lorsque celui-ci n’est
//pas activé (none).
monochromeBitmapCompression = BitmapCompression.zip;
monochromeBitmapSampling = Sampling.none;
//Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs monochromes dans le
présent exemple.
//Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap
monochromes lorsque celui-ci n’est
//pas activé (none).
//
//Autres options de compression.
compressionType = PDFCompressionType.compressNone;
compressTextAndLineArt = true;
contentToEmbed = PDFContentToEmbed.embedAll;
cropImagesToFrames = true;
optimizePDF = true;
140
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
//
//Options de prépresse et repères d’imprimantes
//Extraire les valeurs du fond perdu du document.
bleedBottom = app.activeDocument.documentPreferences.documentBleedBottomOffset;
bleedTop = app.activeDocument.documentPreferences.documentBleedTopOffset;
bleedInside = app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset;
bleedOutside = app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffset;
//Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères de
marge.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 && bleedOutside == 0){
bleedMarks = true;
}
else{
bleedMarks = false;
}
colorBars = true;
colorTileSize = 128;
grayTileSize = 128;
cropMarks = true;
omitBitmaps = false;
omitEPS = false;
omitPDF = false;
pageInformationMarks = true;
pageMarksOffset = 12;
pdfColorSpace = PDFColorSpace.unchangedColorSpace;
//Type de repère par défaut.
pdfMarkType = 1147563124;
printerMarkWeight = PDFMarkWeight.p125pt;
registrationMarks = true;
try{
simulateOverprint = false;
}
catch(e){}
useDocumentBleedWithPDF = true;
//Attribuer à viewPDF la valeur true pour ouvrir le PDF dans Acrobat ou Adobe Reader.
viewPDF = false;
}
//Exportez maintenant le document. Spécifiez le chemin de votre fichier.
app.activeDocument.exportFile(ExportFormat.pdfType, File(“/c/myTestDocument.pdf”), false);
Exportation d’un groupe de pages
L’exemple suivant indique comment exporter un groupe de pages spécifique au format PDF :
//ExportPageRangeAsPDF.jsx
//JavaScript InDesign CS2
//Exporte le groupe de pages indiqué au format PDF.
//Suppose que vous disposez d’un document ouvert, et que celui-ci
//comprend au minimum 12 pages.
with(app.pdfExportPreferences){
//Le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de
pages
//(comme vous l’indiqueriez dans les boîtes de dialogue d’impression ou d’exportation PDF).
pageRange = "1, 3-6, 7, 9-11, 12";
}
var myPDFExportPreset = app.pdfExportPresets.item("prepress")
app.activeDocument.exportFile(ExportFormat.pdfType, File("/c/myTestDocument.pdf"), false,
myPDFExportPreset);
Exportation de pages au format EPS
Lorsque vous exportez un document au format EPS, InDesign enregistre chaque page du fichier en tant
que graphique EPS individuel (par définition, un fichier EPS ne peut comprendre qu’une seule page).
Si vous exportez plusieurs pages, InDesign ajoute l’indice de la page au nom de fichier. L’indice de la
page dans le document n’est pas nécessairement le nom de la page (tel qu’il est défini par les options de
section pour la section comprenant la page en question).
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans JavaScript
Exportation de toutes les pages
Le script suivant permet d’exporter les pages du document actif dans un ou plusieurs fichiers EPS :
//ExportAsEPS.jsx
//JavaScript InDesign CS2
//Exporte les pages du document actif au format EPS.
var myFile = new File("/c/myTestFile.eps");
app.activeDocument.exportFile(ExportFormat.epsType, myFile, false);
Exportation d’un groupe de pages
Pour contrôler les pages à exporter en EPS, attribuez à la propriété pageRange des préférences
d’exportation EPS une chaîne de groupe de pages comprenant les pages que vous souhaitez exporter
avant l’exportation :
//ExportSelectedPagesAsEPS.jsx
//JavaScript InDesign CS2
//Entrer le nom de la page à exporter dans l’instruction suivante.
//Notez que le nom de la page n’est pas nécessairement l’indice de la page dans le
//document (par exemple, la première page d’un document dont la numérotation commence
//à 21 sera la page « 21 », et non 1).
app.epsExportPreferences.pageRange = "1-3, 6, 9";
var myFile = new File("/c/myTestFile.eps");
app.activeDocument.exportFile(ExportFormat.epsType, myFile, false);
Contrôle des options d’exportation
Outre le groupe de pages, vous pouvez contrôler d’autres options d’exportation EPS à l’aide d’un script en
définissant les propriétés de l’objet epsExportPreferences :
//ExportEachPageAsEPS.jsx
//JavaScript InDesign CS2.
//Exporte chaque page d’un document InDesign CS en tant que fichier EPS individuel
//dans un dossier sélectionné à l’aide des paramètres d’exportation EPS actuels.
//Afficher une boîte de dialogue "choose folder".
if(app.documents.length != 0){
var myFolder = Folder.selectDialog ("Choose a Folder");
if(myFolder != null){
myExportPages(myFolder);
}
}
else{
alert("Please open a document and try again.");
}
function myExportPages(myFolder){
var myFilePath, myPageName, myFile;
var myDocument = app.activeDocument;
var myDocumentName = myDocument.name;
var myDialog = app.dialogs.add({name:"ExportPages"});
with(myDialog.dialogColumns.add().dialogRows.add()){
staticTexts.add({staticLabel:"Base name:"});
var myBaseNameField = textEditboxes.add({editContents:myDocumentName, minWidth:160});
}
var myResult = myDialog.show();
if(myResult == true){
//Le nom des fichiers exportés est composé du nom de base + le nom de la page + « .eps ».
var myBaseName = myBaseNameField.editContents;
//Supprimer la boîte de dialogue de la mémoire.
myDialog.destroy();
//Générer un chemin de fichier à partir du nom de dossier, du nom du document de base et du
nom de la page.
for(var myCounter = 0; myCounter < myDocument.pages.length; myCounter++){
myPageName = myDocument.pages.item(myCounter).name;
app.epsExportPreferences.pageRange = myPageName;
//Le nom des fichiers exportés est composé du nom de base + le nom de la
//page + « .eps ».
//Si le nom de la page contient le caractère deux-points (ce qui est le cas si le
document
141
142
Utilisation de documents dans JavaScript
Adobe InDesign CS2 Guide des scripts
//comprend des sections),
//supprimez-le.
var myRegExp = new RegExp(":","gi");
myPageName = myPageName.replace(myRegExp, "_");
myFilePath = myFolder + "/" + myBaseName + "_" + myPageName + ".eps";
myFile = new File(myFilePath);
app.activeDocument.exportFile(ExportFormat.epsType, myFile, false);
}
}
else{
myDialog.destroy();
}
}
Adobe InDesign CS2 Guide des scripts
7
Utilisation de documents dans VBScript
Utilisation de documents dans VBScript
La plupart des tâches que vous effectuez dans InDesign concernent des documents : création,
enregistrement, insertion d’éléments de page, de couleurs, de styles et de textes. Les documents sont
également nécessaires au script InDesign, et presque chaque tâche associée à un document peut être
automatisée par le biais d’un script.
Dans ce chapitre, vous apprendrez à :


Effectuer les tâches élémentaires de gestion de documents, parmi lesquelles

Créer un document

Ouvrir un document

Fermer un document

Enregistrer un document
Effectuer les tâches élémentaires de mise en page, notamment :

Définir le format de page et la longueur du document

Définir le fond perdu et la ligne-bloc

Déterminer les colonnes et les marges

Changer l’aspect de la table de montage

Utiliser les repères et les grilles

Changer les unités de mesure et le point d’origine de la règle

Déterminer et appliquer les paramètres prédéfinis de document

Définir les pages types (les doubles pages types)

Définir les paramètres de mise en forme de texte par défaut

Ajouter des métadonnées XMP (informations sur un fichier)

Créer un modèle de document

Imprimer un document

Exporter un document au format PDF

Exporter des pages d’un document au format EPS
Remarque : si ce n’est déjà fait, consultez le chapitre 3, « Initiation aux scripts InDesign » et apprenez à
créer un script avant de continuer.
143
144
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Notions de base de la gestion de documents
Dans la plupart des situations, votre script doit soit ouvrir soit créer un document, l’enregistrer, puis le
fermer.
Création d’un document
Si vous n’avez pas de document existant, vous devez en créer un. Pour créer un document :
Rem
Rem
Rem
Set
Set
MakeDocument.vbs
VBScript InDesign CS2
Crée un document.
myInDesign = CreateObject("InDesign.Application.CS2")
myDocument = myInDesign.Documents.Add
La méthode Document.Add peut accepter deux paramètres facultatifs, comme indiqué dans le script
suivant :
Rem
Rem
Rem
Rem
Rem
Rem
Rem
Rem
Rem
Set
Set
Rem
Rem
Rem
MakeDocumentWithParameters.vbs
VBScript InDesign CS2
Crée un document.
Le premier paramètre (ShowingWindow) permet de contrôler la visibilité du document.
Les documents masqués ne sont pas réduits, et ne s’affichent que lorsque vous
créez une fenêtre.
Le second paramètre (DocumentPreset) précise quel paramètre prédéfini de document utiliser.
L’instruction suivante suppose que vous avez défini un paramètre prédéfini de document
nommé "Flyer".
myInDesign = CreateObject("InDesign.Application.CS2")
myDocument = myInDesign.Documents.Add(True, myInDesign.DocumentPresets.Item("Flyer"))
Si vous attribuez la valeur false au paramètre ShowingWindow, vous pouvez
afficher le document en créant une fenêtre.
Set myLayoutWindow = myDocument.Windows.Add
Ouverture d’un document
L’exemple de script ci-dessous indique comment ouvrir un document existant :
Rem
Rem
Rem
Set
Set
OpenDocument.vbs
VBScript InDesign CS2
Ouvre un document existant. Spécifiez le chemin de votre fichier.
myInDesign = CreateObject("InDesign.Application.CS2")
myDocument = myInDesign.Open("c:\myTestDocument.indd")
Définissez le paramètre ShowingWindow sur false (la valeur par défaut est true) dans la méthode Open
pour masquer le document. Ceci peut vous permettre d’améliorer les performances d’un script. Pour
afficher un document masqué, créez une fenêtre, comme indiqué dans le script suivant :
Rem OpenDocumentInBackground.vbs
Rem VBScript InDesign CS2
Rem Ouvre un document existant en arrière-plan, puis affiche ce document.
Rem Spécifiez le chemin de votre fichier.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Open("c:\myTestDocument.indd", False)
Rem A ce stade, vous pourriez travailler sur le document sans afficher la
Rem fenêtre du document. Dans certains cas, les scripts s’exécutent plus vite si la fenêtre du
document
Rem n’est pas visible.
Rem Lorsque vous souhaitez afficher le document masqué, créez une fenêtre.
Set myLayoutWindow = myDocument.Windows.Add
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
145
Fermeture d’un document
La méthode Close permet de fermer un document :
Rem CloseDocument.vbs
Rem VBScript InDesign CS2
Rem Ferme le document actif.
Set myInDesign = CreateObject("InDesign.Application.CS2")
myInDesign.ActiveDocument.Close
Rem Notez que vous pourriez également utiliser :
Rem myInDesign.Documents.Item(1).Close
Pour la dernière ligne, notez que le document 1 fait toujours référence au document au premier plan.
La méthode Close peut accepter deux paramètres facultatifs :
Rem CloseWithParameters.vbs
Rem VBScript InDesign CS2
Rem Utiliser les options idSaveOptions.idYes pour enregistrer le document, idSaveOptions.idNo
Rem pour fermer le document sans l’enregistrer ou idSaveOptions.idAsk pour
Rem afficher une invite. Avec idSaveOptions.idYes, vous devrez
Rem faire référence à un fichier vers lequel enregistrer dans le second paramètre (SavingIn).
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Si le fichier n’a pas été enregistré, affichez une invite.
If myInDesign.ActiveDocument.Saved <> True Then
myInDesign.ActiveDocument.Close idSaveOptions.idAsk
Rem Ou, pour enregistrer sous un nom de fichier particulier :
Rem myFile = "c:\myTestDocument.indd"
Rem myInDesign.ActiveDocument.Close idSaveOptions.idYes, myFile
Else
Rem Si le fichier a déjà été enregistré, enregistrez-le.
myInDesign.ActiveDocument.Close idSaveOptions.idYes
End If
Cet exemple ferme tous les documents ouverts sans les enregistrer :
Rem
Rem
Rem
Set
For
CloseAll.vbs
VBScript InDesign CS2
Ferme tous les documents ouverts sans les enregistrer.
myInDesign = CreateObject("InDesign.Application.CS2")
myCounter = myInDesign.Documents.Length To 1 Step -1
myInDesign.Documents.Item(myCounter).Close idSaveOptions.idNo
Next
Enregistrement d’un document
Dans l’interface utilisateur d’InDesign, la commande Enregistrer du menu Fichier permet d’enregistrer
un fichier, l’option Enregistrer sous permet d’enregistrer un fichier sous un nom différent. Dans le script
InDesign, la méthode save permet d’effectuer les deux opérations :
Rem SaveDocument.vbs
Rem VBScript InDesign CS2
Rem Si le document actif a subi des modifications depuis le dernier enregistrement, enregistrezle.
Set myInDesign = CreateObject("InDesign.Application.CS2")
If myInDesign.ActiveDocument.Modified = True Then
myInDesign.ActiveDocument.Save
End If
La méthode Save propose deux options : la première (To) détermine le fichier vers lequel le fichier actuel
doit être enregistré ; la seconde (Stationery) peut être définie sur true pour enregistrer le document en
tant que modèle :
Rem
Rem
Rem
Set
SaveDocumentAs.vbs
VBScript InDesign CS2
Si le document actif n’a jamais été enregistré, enregistrez-le.
myInDesign = CreateObject("InDesign.Application.CS2")
146
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
If myDocument.Saved = False Then
Rem Si vous n’indiquez pas un nom de fichier,
Rem InDesign affichera la boîte de dialogue Enregistrer.
myInDesign.ActiveDocument.Save "c:\myTestDocument.indd"
End If
L’exemple suivant permet d’enregistrer un document en tant que modèle :
Rem SaveAsTemplate.vbs
Rem VBScript InDesign CS2
Rem Enregistrer le document actif en tant que modèle.
Set myInDesign = CreateObject("InDesign.Application.CS2")
If myInDesign.ActiveDocument.Saved = True Then
Rem Convertir le nom de fichier en une chaîne de caractères.
myFileName = myInDesign.ActiveDocument.FullName
Rem Si le nom du fichier comprend l’extension « .indd », remplacez-la par « .indt ».
If InStr(1, myFileName, ".indd") <> 0 Then
myFileName = Replace(myFileName, ".indd", ".indt")
End If
Else
Rem Si le document n’a pas été enregistré, indiquez un
Rem nom/chemin par défaut.
myFileName = "c:\myTestDocument.indt"
End If
myInDesign.ActiveDocument.Save myFileName, True
Notions de base de la mise en page
Chaque document comprend un format de page, un nombre de pages attribué, des zones de fond perdu
et de ligne-bloc, des colonnes et des marges qui définissent la zone de placement des éléments.
Définition du format de page et de la longueur du document
Lorsque vous créez un document dans l’interface utilisateur d’InDesign, vous pouvez spécifier le format et
l’orientation de la page, le nombre de pages et l’utilisation éventuelle de pages en vis-à-vis. Pour créer un
document à l’aide d’un script InDesign, vous utilisez la méthode Documents.Add. Une fois le document
créé, vous pouvez contrôler ces paramètres grâce à l’objet documentPreferences :
Rem DocumentPreferences.vbs
Rem VBScript InDesign CS2
Rem Utiliser l’objet préférences du document pour modifier les
Rem dimensions et l’orientation du document.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
With myDocument.DocumentPreferences
.PageHeight = "800pt"
.PageWidth = "600pt"
.PageOrientation = idPageOrientation.idLandscape
.PagesPerDocument = 16
End With
Remarque : l’objet Application utilise contient également un objet DocumentPreferences. Vous
pouvez déterminer les valeurs par défaut de l’application pour la hauteur et la largeur de
page, ainsi que d’autres propriétés en modifiant les propriétés de cet objet.
Définition du fond perdu et de la ligne-bloc
Dans InDesign, le fond perdu et la ligne-bloc sont des zones en-dehors des marges qui peuvent être
imprimées ou comprises dans un document PDF exporté. De manière générale, ces zones sont utilisées
pour les objets qui s’étendent au-delà des bords de page (fond perdu) et des informations sur le
document/travail (ligne-bloc). Les deux zones peuvent être imprimées et exportées indépendamment
l’une de l’autre. Par exemple, vous pouvez choisir d’ignorer les informations sur la ligne-bloc pour
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
147
l’impression finale d’un document. Le script suivant détermine le fond perdu et la ligne-bloc pour un
nouveau document :
Rem BleedAndSlug.vbs
Rem VBScript InDesign CS2
Rem Créer un document.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Les propriétés de fond perdu et de ligne-bloc appartiennent à l’objet documentPreferences.
With myDocument.DocumentPreferences
Rem Fond perdu
.DocumentBleedBottomOffset = "3p"
.DocumentBleedTopOffset = "3p"
.DocumentBleedInsideOrLeftOffset = "3p"
.DocumentBleedOutsideOrRightOffset = "3p"
Rem Ligne-bloc
.SlugBottomOffset = "18p"
.SlugTopOffset = "3p"
.SlugInsideOrLeftOffset = "3p"
.SlugRightOrOutsideOffset = "3p"
End With
Si toutes les valeurs du fond perdu sont égales, comme dans l’exemple précédent, vous pouvez
également utiliser la propriété DocumentBleedUniformSize :
Rem UniformBleed.vbs
Rem VBScript InDesign CS2
Rem Créer un document.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Les propriétés de fond perdu appartiennent à l’objet documentPreferences.
With myDocument.DocumentPreferences
Rem Fond perdu
.DocumentBleedTopOffset = "3p"
.DocumentBleedUniformSize = True
End With
Si toutes les valeurs de la ligne-bloc sont égales, vous pouvez utiliser la propriété DocumentSlugUnifor
mSize :
Rem UniformSlug.vbs
Rem VBScript InDesign CS2
Rem Créer un document.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Les propriétés de ligne-bloc appartiennent à l’objet documentPreferences.
With myDocument.DocumentPreferences
Rem Ligne-bloc :
.SlugTopOffset = "3p"
.DocumentSlugUniformSize = True
End With
Vous pouvez non seulement déterminer la largeur et la hauteur des zones de fond perdu et de ligne-bloc,
mais également la couleur des repères délimitant ces zones. Cette propriété ne se trouve pas dans l’objet
DocumentPreferences, mais dans l’objet PasteboardPreferences :
Rem BleedSlugGuideColors.vbs
Rem VBScript InDesign CS2
Rem Configurer les couleurs pour afficher les repères de fond perdu et de ligne-bloc.
Set myInDesign = CreateObject("InDesign.Application.CS2")
With myInDesign.ActiveDocument.PasteboardPreferences
Rem Tous les repères InDesign peuvent utiliser les constantes de couleurs UI...
.BleedGuideColor = idUIColors.idCuteTeal
.SlugGuideColor = idUIColors.idCharcoal
Rem ...ou un ensemble de valeurs RVB (de 0 à 255).
Rem .BleedGuideColor = Array(0, 198, 192)
Rem .SlugGuideColor = Array(192, 192, 192)
End With
148
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Configuration des marges et des colonnes
Dans un document, chaque page peut être configurée différemment en termes de marges et de colonnes.
Avec le script InDesign, ces propriétés font partie de l’objet MarginPreferences pour chaque page.
A titre d’exemple, ce script crée un document, puis définit les marges et les colonnes pour toutes les pages
de la planche type :
Rem MarginsAndColumns.vbs
Rem VBScript InDesign CS2
Rem Définit les marges et les colonnes de la première page du document exemple.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
With myDocument.Pages.Item(1).MarginPreferences
.ColumnCount = 3
Rem columnGutter peut être soit un nombre, soit des mesures.
.ColumnGutter = "1p"
.Top = "4p"
.Bottom = "6p"
Rem When document.documentPreferences.facingPages = true,
Rem « left » (gauche) signifie intérieur, « right » (droite) extérieur.
.Left = "6p"
.Right = "4p"
End With
InDesign vous permet de ne pas créer de page qui soit plus petite que la somme de ses marges. La largeur
de la page doit être supérieure à la somme des marges gauche et droite, et la hauteur de page doit être
supérieure à la somme des marges de haut et de bas de page. Si vous créez des pages très petites (pour
un encart presse par exemple) dans l’interface utilisateur InDesign, entrez de nouvelles valeurs dans la
zone de texte Marges de la boîte de dialogue Nouveau document pour définir des marges correctes lors
de la création du document.
Toutefois, la solution est moins évidente avec un script. Lorsque vous créez un document, le script
utilise les préférences de marge par défaut de l’application. Ces marges sont appliquées à toutes les
pages du document, y compris aux gabarits. Les préférences de marges du document, une fois définies,
ne s’appliquent qu’aux nouvelles pages et n’ont pas d’incidence sur les pages existantes. Si vous
essayez de définir la hauteur et la largeur de page avec des valeurs inférieures à la somme des marges
correspondantes sur l’une des pages existantes, InDesign ne modifie pas le format de page.
Deux solutions s’offrent à vous. La première consiste à définir les marges des pages existantes avant de
modifier le format de page :
Rem PageMarginsForSmallPages.vbs
Rem VBScript InDesign CS2
Rem Crée un document et détermine les marges.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
myDocument.ViewPreferences.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
myDocument.ViewPreferences.VerticalMeasurementUnits = idMeasurementUnits.idPoints
With myDocument.MarginPreferences
.Top = 0
.Left = 0
.Bottom = 0
.Right = 0
.ColumnCount = 1
.ColumnGutter = 0
End With
Rem L’instruction suivante suppose que votre document par défaut comprend une seule page.
With myDocument.Pages.Item(1).MarginPreferences
.Top = 0
.Left = 0
.Bottom = 0
.Right = 0
.ColumnCount = 1
.ColumnGutter = 0
End With
Rem L’instruction suivante suppose que votre planche type par défaut comprend deux pages.
With myDocument.MasterSpreads.Item(1).Pages.Item(1).MarginPreferences
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
149
.Top = 0
.Left = 0
.Bottom = 0
.Right = 0
.ColumnCount = 1
.ColumnGutter = 0
End With
With myDocument.MasterSpreads.Item(1).Pages.Item(2).MarginPreferences
.Top = 0
.Left = 0
.Bottom = 0
.Right = 0
.ColumnCount = 1
.ColumnGutter = 0
End With
myDocument.DocumentPreferences.PageHeight = "1p"
myDocument.DocumentPreferences.PageWidth = “6p”
Vous pouvez également modifier les préférences de marges par défaut de l’application avant de créer le
document :
Rem ApplicationPageMargins.vbs
Rem VBScript InDesign CS2
Rem Définit les marges de pages par défaut de l’application. Ces paramètres s’appliquent à
Rem tous les nouveaux documents. Les documents existants
Rem restent intacts.
Set myInDesign = CreateObject("InDesign.Application.CS2")
With myInDesign.MarginPreferences
Rem Enregistrer les préférences de marges par défaut actuelles de l’application.
myY1 = .Top
myX1 = .Left
myY2 = .Bottom
myX2 = .Right
Rem Définir les préférences de marges par défaut de l’application.
.Top = 0
.Left = 0
.Bottom = 0
.Right = 0
End With
Rem Créer un document exemple pour mettre en évidence les modifications.
Set myDocument = myInDesign.Documents.Add
myDocument.DocumentPreferences.PageHeight = "1p"
myDocument.DocumentPreferences.PageWidth = "6p"
Rem Rétablir les préférences de marges par défaut de l’application à leur état antérieur.
With myInDesign.MarginPreferences
.Top = myY1
.Left = myX1
.Bottom = myY2
.Right = myX2
End With
Modification de l’aspect de la table de montage
La table de montage est une zone qui encadre les pages InDesign. Vous pouvez y stocker temporairement
des éléments de la page. Il est possible de modifier la taille et la couleur de la table de montage à l’aide
d’un script. La propriété PasteboardColor permet de contrôler la couleur en mode Normal ; la propriété
PreviewBackgroundColor définit la couleur de la table de montage en mode Aperçu :
Rem PasteboardPreferences.vbs
Rem VBScript InDesign CS2
Rem Créer un document et modifier la taille de la table de montage.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
With myDocument.PasteboardPreferences
Rem Vous pouvez utiliser soit un nombre, soit des mesures pour définir l’espace au-dessus/en
dessous.
.MinimumSpaceAboveAndBelow = "12p"
Rem Il est possible de définir comme couleur de l’arrière plan de l’aperçu (visible en
Rem mode Aperçu uniquement) l’une des constantes de couleurs UI prédéfinies...
.PreviewBackgroundColor = idUIColors.idGrassGreen
150
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Rem ...ou un ensemble de valeurs RVB (de 0 à 255).
Rem .PreviewBackgroundColor = Array(192, 192, 192)
End With
Utilisation des repères et des grilles
Les repères et les grilles facilitent le positionnement des objets sur les pages de votre document.
Définition des repères
InDesign propose des repères pour vous aider à positionner les objets sur les pages de votre document.
Exemple d’utilisation des repères :
Rem Guides.vbs
Rem VBScript InDesign CS2
Rem Créer un document, insérer des repères et définir les propriétés des repères.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
myPageWidth = myDocument.DocumentPreferences.PageWidth
myPageHeight = myDocument.DocumentPreferences.PageHeight
With myDocument.Pages.Item(1)
Set myMarginPreferences = .MarginPreferences
Rem Placer des repères sur les marges de la page.
With .Guides.Add
.Orientation = idHorizontalOrVertical.idVertical
.Location = myMarginPreferences.Left
End With
With .Guides.Add
.Orientation = idHorizontalOrVertical.idVertical
.Location = (myPageWidth - myMarginPreferences.Right)
End With
With .Guides.Add
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = myMarginPreferences.Top
End With
With .Guides.Add
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = (myPageHeight - myMarginPreferences.Bottom)
End With
Rem Placer un repère vertical au centre de la page.
With .Guides.Add
.Orientation = idHorizontalOrVertical.idVertical
.Location = (myPageWidth / 2)
End With
Rem Placer un repère horizontal au centre de la page.
With .Guides.Add
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = (myPageHeight / 2)
End With
End With
Les repères horizontaux peuvent se limiter à une page donnée, ou s’étendre sur toutes les pages d’une
planche. A l’aide d’un script InDesign, vous pouvez contrôler cette possibilité grâce à la propriété
FitToPage (les repères verticaux ignorent cette propriété).
Rem SpreadAndPageGuides.vbs
Rem VBScript InDesign CS2
Rem Met en évidence la différence entre les repères de planche et les repères de page.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
myDocument.DocumentPreferences.FacingPages = True
myDocument.DocumentPreferences.PagesPerDocument = 3
With myDocument.Spreads.Item(2)
Rem Notez la différence entre ces deux repères sur les pages 2 et 3.
With .Guides.Add
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "6p"
.FitToPage = True
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
151
End With
With .Guides.Add
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "9p"
.FitToPage = False
End With
End With
Vous pouvez utiliser un script pour modifier le calque, la couleur et la visibilité des repères, tout comme
vous pouvez le faire à partir de l’interface utilisateur :
Rem GuideOptions.vbs
Rem VBScript InDesign CS2
Rem Indique comment définir les options de repères.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Créer un calque nommé "guide layer".
Set myLayer = myDocument.Layers.Add
myLayer.Name = "guide layer"
Rem Ajouter une série de repères à la page 1.
With myDocument.Pages.Item(1)
Rem Créer un repère sur le calque créé précédemment.
With .Guides.Add(myLayer)
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "12p"
End With
Rem Méthode alternative pour créer un repère sur un calque spécifique.
With .Guides.Add()
.ItemLayer = myLayer
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "14p"
End With
Rem Créer un repère verrouillé.
With .Guides.Add()
.ItemLayer = myLayer
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "16p"
.Locked = True
End With
Rem Définir le seuil d’affichage d’un repère.
With .Guides.Add()
.ItemLayer = myLayer
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "18p"
.ViewThreshold = 100
End With
Rem Déterminer la couleur d’un repère à l’aide d’une constante de couleurs UI.
With .Guides.Add()
.ItemLayer = myLayer
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "18p"
.GuideColor = idUIColors.idGray
End With
Rem Déterminer la couleur d’un repère à l’aide d’un ensemble de valeurs RVB.
With .Guides.Add()
.ItemLayer = myLayer
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = "22p"
.GuideColor = Array(192, 192, 192)
End With
End With
Il est également possible de créer des repères à l’aide de la méthode CreateGuides des planches et des
planches types :
Rem CreateGuides.vbs
Rem VBScript InDesign CS2
Rem Ajouter une série de repères à l’aide de la méthode de création de repères.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Paramètres (tous facultatifs) : row count, column count, row gutter (compte de ligne, compte
de colonne, gouttière de ligne),
Rem column gutter,guide color, fit margins, remove existing, layer (gouttière de colonne,
152
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
couleur de repère, marges ajustées, suppression, calque).
Rem Notez que cette méthode de création de repères n’accepte pas de valeurs RVB
Rem pour le paramètre de couleur de repère.
myDocument.Spreads.Item(1).CreateGuides 4, 4, "1p", "1p", idUIColors.idGray, True, True,
myDocument.Layers.Item(0)
Configuration des préférences de grille
Pour contrôler les propriétés du document et de la grille de ligne de base, définissez les propriétés de
l’objet GridPreferences comme dans le script ci-dessous :
Rem DocumentAndBaselineGrids.vbs
Rem VBScript InDesign CS2
Rem Crée un document puis définit les préférences de la
Rem grille de document et de la grille de ligne de base.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Définir les unités de mesure du document en points.
myDocument.ViewPreferences.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
myDocument.ViewPreferences.VerticalMeasurementUnits = idMeasurementUnits.idPoints
Rem Définir les préférences de grille.
With myDocument.GridPreferences
.BaselineStart = 56
.BaselineDivision = 14
.BaselineGridShown = True
.HorizontalGridlineDivision = 14
.HorizontalGridSubdivision = 5
.VerticalGridlineDivision = 14
.VerticalGridSubdivision = 5
.DocumentGridShown = True
End With
Magnétisme des repères et des grilles
La totalité des paramètres de magnétisme des grilles et des repères d’un document se trouve dans les
propriétés des objets GuidePreferences et GridPreferences. Voici un exemple :
Rem GuideAndGridPreferences.vbs
Rem VBScript InDesign CS2
Rem Définit les préférences des repères et des grilles.
Rem Suppose que vous disposez d’un document ouvert.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.ActiveDocument
With myDocument.GuidePreferences
.GuidesInBack = True
.GuidesLocked = False
.GuidesShown = True
.GuidesSnapto = True
End With
With myDocument.GridPreferences
.DocumentGridShown = False
.DocumentGridSnapto = True
Rem Magnétisme de la grille de ligne de base actif pour les objets lorsque
Rem guidePreferences.guideSnapTo est défini sur true.
.BaselineGridShown = True
End With
Modification des unités de mesure et de la règle
Les exemples de scripts donnés jusqu’à présent faisaient appel à des chaînes de mesures, c’est à dire des
chaînes forçant InDesign à utiliser une unité de mesure spécifique, « 8,5 p » par exemple, pour 8,5 pouces.
Vous pourriez en effet utiliser un système de mesure différent lors de l’exécution du script.
Pour déterminer le système de mesure d’un script, utilisez l’objet ViewPreferences du document.
Rem ViewPreferences.vbs
Rem VBScript InDesign CS2
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
153
Rem Modifie les unités de mesure du document actif.
Rem Suppose que vous disposez d’un document ouvert.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.ActiveDocument
With myDocument.ViewPreferences
Rem Les différentes unités de mesure possibles sont les suivantes :
Rem * idMeasurementUnits.idPicas
Rem * idMeasurementUnits.idPoints
Rem * idMeasurementUnits.idInches
Rem * idMeasurementUnits.idInchesDecimal
Rem * idMeasurementUnits.idMillimeters
Rem * idMeasurementUnits.idCentimeters
Rem * idMeasurementUnits.idCiceros
Rem * idMeasurementUnits.idCustom
Rem Si vous configurez les unités de mesure verticales et horizontales
Rem sur idMeasurementUnits.idCustom, vous pouvez également définir une
Rem marque de graduation personnalisée (en points) à l’aide de :
Rem .HorizontalCustomPoints = 15
Rem .VerticalCustomPoints = 15
Rem Définir les unités de mesure verticales et horizontales en points.
.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
.VerticalMeasurementUnits = idMeasurementUnits.idPoints
End With
Si vous écrivez un script qui requiert un système de mesure particulier, vous pouvez modifier les unités
de mesure au début du script, puis rétablir celles d’origine à la fin de celui-ci, comme dans l’exemple cidessous :
Rem ResetMeasurementUnits.vbs
Rem VBScript InDesign CS2
Rem Modifie, puis rétablit les unités de mesure du document actif.
Rem Suppose que vous disposez d’un document ouvert.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.ActiveDocument
With myDocument.ViewPreferences
myOldXUnits = .HorizontalMeasurementUnits
myOldYUnits = .VerticalMeasurementUnits
.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
.VerticalMeasurementUnits = idMeasurementUnits.idPoints
End With
Rem A ce stade, vous pouvez exécuter une série quelconque d’actions de script dépendant des
Rem unités de mesure que vous avez définies. A la fin du
Rem script, rétablissez les unités de mesure à leur état d’origine.
With myDocument.ViewPreferences
.HorizontalMeasurementUnits = myOldXUnits
.VerticalMeasurementUnits = myOldYUnits
End With
Définition et application des paramètres prédéfinis de document
Les paramètres prédéfinis de documents InDesign vous permettent de stocker et d’appliquer des
paramètres de configuration de document que vous utilisez souvent (format de page, marges, colonnes,
et zones de fond perdu et de ligne-bloc). Lorsque vous créez un document, vous pouvez baser celui-ci sur
un paramètre prédéfini de document.
Création d’un paramètre prédéfini par copie de valeurs
Pour créer un paramètre prédéfini de document à partir des paramètres d’un document existant, ouvrez
le document dont vous souhaitez copier les propriétés de configuration pour votre paramètre prédéfini,
puis exécutez le script suivant :
Rem
Rem
Rem
Rem
Set
DocumentPresetByExample.vbs
VBScript InDesign CS2
Crée un paramètre prédéfini de document d’après la configuration du document actif.
Suppose que vous disposez d’un document ouvert.
myInDesign = CreateObject("InDesign.Application.CS2")
154
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
If myInDesign.Documents.Count > 0 Then
Set myDocument = myInDesign.ActiveDocument
Rem Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
Rem Désactiver la gestion normale des erreurs.
Err.Clear
On Error Resume Next
Set myDocumentPreset = myInDesign.DocumentPresets.Item("myDocumentPreset")
Rem Si le paramètre prédéfini de document n’existe pas, l’instruction ci-dessus
Rem renvoie une erreur. Gérer l’erreur.
If (Err.Number <> 0) Then
Set myDocumentPreset = myInDesign.DocumentPresets.Add
myDocumentPreset.Name = "myDocumentPreset"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Compléter les propriétés du paramètre prédéfini de document avec
Rem les propriétés correspondantes du document actif.
With myDocumentPreset
Rem Notez que le script suivant applique les préférences de marges
Rem du document ; pour appliquer les préférences de marges de la page active,
Rem remplacez "myDocument" par "myInDesign.activeWindow.activePage" dans les
Rem six lignes suivantes (en supposant que la fenêtre active est une fenêtre de mise en
page).
.Left = myDocument.MarginPreferences.Left
.Right = myDocument.MarginPreferences.Right
.Top = myDocument.MarginPreferences.Top
.Bottom = myDocument.MarginPreferences.Bottom
.ColumnCount = myDocument.MarginPreferences.ColumnCount
.ColumnGutter = myDocument.MarginPreferences.ColumnGutter
.DocumentBleedBottomOffset = myDocument.DocumentPreferences.DocumentBleedBottomOffset
.DocumentBleedTopOffset = myDocument.DocumentPreferences.DocumentBleedTopOffset
.DocumentBleedInsideOrLeftOffset = myDocument.DocumentPreferences.DocumentBleedInsideOrL
eftOffset
.DocumentBleedOutsideOrRightOffset = myDocument.DocumentPreferences.DocumentBleedOutside
OrRightOffset
.FacingPages = myDocument.DocumentPreferences.FacingPages
.PageHeight = myDocument.DocumentPreferences.PageHeight
.PageWidth = myDocument.DocumentPreferences.PageWidth
.PageOrientation = myDocument.DocumentPreferences.PageOrientation
.PagesPerDocument = myDocument.DocumentPreferences.PagesPerDocument
.SlugBottomOffset = myDocument.DocumentPreferences.SlugBottomOffset
.SlugTopOffset = myDocument.DocumentPreferences.SlugTopOffset
.SlugInsideOrLeftOffset = myDocument.DocumentPreferences.SlugInsideOrLeftOffset
.SlugRightOrOutsideOffset = myDocument.DocumentPreferences.SlugRightOrOutsideOffset
End With
End If
Création d’un paramètre prédéfini à partir de nouvelles valeurs
Pour créer un paramètre prédéfini de document avec des valeurs particulières, exécutez le script suivant :
Rem DocumentPreset.vbs
Rem VBScript InDesign CS2
Rem Crée un paramètre prédéfini de document.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Si le paramètre prédéfini de document "myDocumentPreset" n’existe pas, créez-le.
Err.Clear
On Error Resume Next
Set myDocumentPreset = myInDesign.DocumentPresets.Item("myDocumentPreset")
If Err.Number <> 0 Then
Set myDocumentPreset = myInDesign.DocumentPresets.Add
myDocumentPreset.Name = "myDocumentPreset"
Err.Clear
End If
On Error GoTo 0
Rem Compléter les propriétés du paramètre prédéfini de document.
With myDocumentPreset
.PageHeight = "9i"
.PageWidth = "7i"
.Left = "4p"
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
155
.Right = "6p"
.Top = "4p"
.Bottom = "9p"
.ColumnCount = 1
.DocumentBleedBottomOffset = "3p"
.DocumentBleedTopOffset = "3p"
.DocumentBleedInsideOrLeftOffset = "3p"
.DocumentBleedOutsideOrRightOffset = "3p"
.FacingPages = True
.PageOrientation = idPageOrientation.idPortrait
.PagesPerDocument = 1
.SlugBottomOffset = "18p"
.SlugTopOffset = "3p"
.SlugInsideOrLeftOffset = "3p"
.SlugRightOrOutsideOffset = "3p"
End With
Utilisation d’un paramètre prédéfini
Pour créer un document à l’aide d’un paramètre prédéfini de document, utilisez le paramètre
DocumentPreset comme indiqué précédemment à la section « Création d’un document ».
Configuration des planches types
Après avoir défini le format de page, le fond perdu et la ligne-bloc du document de base, configurez les
planches types du document :
Rem MasterSpread.vbs
Rem VBScript InDesign CS2
Rem Crée un document, puis indique comment configurer les propriétés de la planche type.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Configurer la première planche type dans un nouveau document.
Set myDocument = myInDesign.Documents.Add
Rem Configurer le document.
With myDocument.DocumentPreferences
.PageHeight = "11i"
.PageWidth = "8.5i"
.FacingPages = True
.PageOrientation = idPageOrientation.idPortrait
End With
Rem Définir le point d’origine de la règle à la page d’origine. Ceci est très important ;
Rem il est autrement plus difficile de placer
Rem correctement les objets sur la page.
myDocument.ViewPreferences.RulerOrigin = idRulerOrigin.idPageOrigin
With myDocument.MasterSpreads.Item(1)
Rem Configurer la page gauche (verso).
With .Pages.Item(1)
With .MarginPreferences
.ColumnCount = 3
.ColumnGutter = "1p"
.Bottom = "6p"
Rem « left » (gauche) signifie intérieur, « right » (droite) extérieur.
.Left = "6p"
.Right = "4p"
.Top = "4p"
End With
Rem Ajouter un simple pied de page avec un numéro de section et un numéro de page.
With .TextFrames.Add
.GeometricBounds = Array("61p", "4p", "62p", "45p")
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idSectionMarker
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idEmSpace
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idAutoPageNumber
.Paragraphs.Item(1).Justification = idJustification.idLeftAlign
End With
End With
Rem Configurer la page droite (recto).
With .Pages.Item(2)
With .MarginPreferences
156
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
.ColumnCount = 3
.ColumnGutter = "1p"
.Bottom = "6p"
Rem « left » (gauche) signifie intérieur, « right » (droite) extérieur.
.Left = "6p"
.Right = "4p"
.Top = "4p"
End With
Rem Ajouter un simple pied de page avec un numéro de section et un numéro de page.
With .TextFrames.Add
.GeometricBounds = Array("61p", "6p", "62p", "47p")
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idAutoPageNumber
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idEmSpace
.InsertionPoints.Item(1).Contents = idSpecialCharacters.idSectionMarker
.Paragraphs.Item(1).Justification = idJustification.idRightAlign
End With
End With
End With
Pour appliquer une planche type à une page de document, utilisez la propriété AppliedMaster de la
page du document :
Rem ApplyMaster.vbs
Rem VBScript InDesign CS2
Rem Applique une planche type à une page.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Suppose que le document actif utilise un gabarit nommé "B-Master"
Rem et au moins deux pages.
myInDesign.ActiveDocument.Pages.Item(2).AppliedMaster = myInDesign.ActiveDocument.MasterSpreads.
Item("B-Master")
Utilisez la même propriété pour appliquer une planche type à une page de planche type :
Rem ApplyMasterToMaster.vbs
Rem VBScript InDesign CS2
Rem Applique un gabarit à un gabarit.
Rem Suppose que "A-Master" est le nom de la planche type par défaut.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
Rem Créer une planche type.
Set myBMaster = myDocument.MasterSpreads.Add
myBMaster.NamePrefix = "B"
myBMaster.BaseName = "Master"
Rem Appliquer la planche type "A" à la première page de la nouvelle planche type.
myInDesign.ActiveDocument.MasterSpreads.Item("B-Master").Pages.Item(1).AppliedMaster =
myInDesign.ActiveDocument.MasterSpreads.Item("A-Master")
Définition des paramètres par défaut de mise en forme de texte
Vous pouvez définir les attributs par défaut de mise en forme de texte pour votre application ou pour
les documents individuels. Si vous définissez les paramètres par défaut de mise en forme de texte pour
l’application, ceux-ci s’appliquent à tous les nouveaux documents ; les documents existants ne changent
pas. Si vous définissez les paramètres par défaut de mise en forme de texte pour un document, ceux-ci
s’appliquent à tout nouveau texte que vous insérez dans le document ; le texte existant ne change pas.
Définition des paramètres de texte par défaut de l’application
Pour définir les paramètres de mise en forme de texte par défaut pour votre application :
Rem ApplicationTextDefaults.vbs
Rem VBScript InDesign CS2
Rem Détermine les paramètres de texte par défaut de l’application, qui s’appliquent
Rem par défaut à tous les nouveaux documents. Les documents existants ne changent pas.
Set myInDesign = CreateObject("InDesign.Application.CS2")
With myInDesign.TextDefaults
.AlignToBaseline = True
Rem Les paramètres suivants risquent d’engendrer
Rem des erreurs si les polices, les styles de police et/ou
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
Rem les langues spécifiques ne sont pas installés sur votre système. Désactiver
Rem la gestion des erreurs pour les ignorer toutes.
On Error Resume Next
.AppliedFont = myInDesign.Fonts.Item("Minion Pro")
.FontStyle = "Normal"
.AppliedLanguage = "English: USA"
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
.AutoLeading = 100
.BalanceRaggedLines = False
.BaselineShift = 0
.Capitalization = idCapitalization.idNormal
.Composer = "Adobe Paragraph Composer"
.DesiredGlyphScaling = 100
.DesiredLetterSpacing = 0
.DesiredWordSpacing = 100
.DropCapCharacters = 0
Rem Si DropCapCharacters = 0, une erreur se produit
Rem lorsque vous tentez de configurer la propriété DropCapLines.
If .DropCapCharacters <> 0 Then
.DropCapLines = 3
Rem Suppose que l’application utilise
Rem un style de caractère par défaut nommé "myDropCap"
.DropCapStyle = myInDesign.CharacterStyles.Item("myDropCap")
End If
.FillColor = myInDesign.Colors.Item("Black")
.FillTint = 100
.FirstLineIndent = "14pt"
.GradientFillAngle
.GradientFillLength
.GridAlignFirstLineOnly = False
.HorizontalScale = 100
.HyphenateAfterFirst = 3
.HyphenateBeforeLast = 4
.HyphenateCapitalizedWords = False
.HyphenateLadderLimit = 1
.HyphenateWordsLongerThan = 5
.Hyphenation = True
.HyphenationZone = "3p"
.HyphenWeight = 9
.Justification = idJustification.idLeftAlign
.KeepAllLinesTogether = False
.KeepLinesTogether = True
.KeepFirstLines = 2
.KeepLastLines = 2
.KeepWithNext = 0
.KerningMethod = "Optical"
.Leading = 14
.LeftIndent = 0
.Ligatures = True
.MaximumGlyphScaling = 100
.MaximumLetterSpacing = 0
.MaximumWordSpacing = 160
.MinimumGlyphScaling = 100
.MinimumLetterSpacing = 0
.MinimumWordSpacing = 80
.NoBreak = False
.OTFContextualAlternate = True
.OTFDiscretionaryLigature = True
.OTFFigureStyle = idOTFFigureStyle.idProportionalOldstyle
.OTFFraction = True
.OTFHistorical = True
.OTFOrdinal = False
.OTFSlashedZero = True
.OTFSwash = False
.OTFTitling = False
.OverprintFill = False
.OverprintStroke = False
.PointSize = 11
.Position = idPosition.idNormal
.RightIndent = 0
.RuleAbove = False
Rem Si la valeur false est attribuée au paramètre de filet au-dessus,
157
158
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Rem une erreur se produit lorsque vous essayez de configurer certaines propriétés de celuici. Bien que
Rem le paramètre de filet au-dessus soit défini sur false, nous avons inclus les propriétés
Rem pour fournir un exemple plus complet.
If .RuleAbove = True Then
.RuleAboveColor = myInDesign.Colors.Item("Black")
.RuleAboveGapColor = myInDesign.Swatches.Item("None")
.RuleAboveGapOverprint = False
.RuleAboveGapTint = 100
.RuleAboveLeftIndent = 0
.RuleAboveLineWeight = 0,25
.RuleAboveOffset = 14
.RuleAboveOverprint = False
.RuleAboveRightIndent = 0
.RuleAboveTint = 100
.RuleAboveType = myInDesign.StrokeStyles.Item("Solid")
.RuleAboveWidth = idRuleWidth.idColumnWidth
End If
.RuleBelow = False
Rem Si la valeur false est attribuée au paramètre de filet au dessous,
Rem une erreur se produit lorsque vous essayez de configurer certaines propriétés de celuici. Bien que
Rem le paramètre de filet au-dessous soit défini sur false, nous avons inclus les propriétés
Rem pour fournir un exemple plus complet.
If .RuleBelow = True Then
.RuleBelowColor = myInDesign.Colors.Item("Black")
.RuleBelowGapColor = myInDesign.Swatches.Item("None")
.RuleBelowGapOverPrint = False
.RuleBelowGapTint = 100
.RuleBelowLeftIndent = 0
.RuleBelowLineWeight = 0,25
.RuleBelowOffset = 0
.RuleBelowOverPrint = False
.RuleBelowRightIndent = 0
.RuleBelowTint = 100
.RuleBelowType = myInDesign.StrokeStyles.Item("Solid")
.RuleBelowWidth = idRuleWidth.idColumnWidth
End If
.SingleWordJustification = idSingleWordJustification.idLeftAlign
.Skew = 0
.SpaceAfter = 0
.SpaceBefore = 0
.StartParagraph = idStartParagraph.idAnywhere
.StrikeThru = False
Rem Si la valeur false est attribuée au paramètre de texte barré, une erreur se produit
Rem lorsque vous essayez de configurer certaines propriétés de celui-ci. Bien que
Rem le paramètre de texte barré soit défini sur false, nous avons inclus les propriétés
Rem pour fournir un exemple plus complet.
If .StrikeThru = True Then
.StrikeThroughColor = myInDesign.Colors.Item("Black")
.StrikeThroughGapColor = myInDesign.Swatches.Item("None")
.StrikeThroughGapOverprint = False
.StrikeThroughGapTint = 100
.StrikeThroughOffset = 3
.StrikeThroughOverprint = False
.StrikeThroughTint = 100
.StrikeThroughType = myInDesign.StrokeStyles.Item("Solid")
.StrikeThroughWeight = 0,25
End If
.StrokeColor = myInDesign.Swatches.Item("None")
.StrokeTint = 100
.StrokeWeight = 0
.Tracking = 0
.Underline = False
Rem Si la valeur false est attribuée au paramètre de soulignement, une erreur se produit
Rem lorsque vous essayez de configurer certaines propriétés de celui-ci. Bien que
Rem le paramètre de soulignement soit défini sur false, nous avons inclus les propriétés
Rem pour fournir un exemple plus complet.
If .Underline = True Then
.UnderlineColor = myInDesign.Colors.Item("Black")
.UnderlineGapColor = myInDesign.Swatches.Item("None")
.UnderlineGapOverprint = False
.UnderlineGapTint = 100
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
159
.UnderlineOffset = 3
.UnderlineOverprint = False
.UnderlineTint = 100
.UnderlineType = myInDesign.StrokeStyles.Item("Solid")
.UnderlineWeight = 0,25
End If
.VerticalScale = 100
End With
Configuration des paramètres par défaut du document actif
Pour définir les paramètres de texte par défaut pour le document actif, remplacez la ligne suivante dans
l’exemple donné précédemment :
with myInDesign.TextDefaults
par :
with myInDesign.ActiveDocument.TextDefaults
Utilisation des paramètres de texte par défaut
Pour appliquer un style de caractère ou de paragraphe par défaut à du texte dans un document, utilisez le
script suivant :
Rem SetTextDefaultToStyle.vbs
Rem VBScript InDesign CS2
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Suppose l’existence d’un style de paragraphe nommé "BodyText" dans le document actif.
myInDesign.ActiveDocument.TextDefaults.AppliedParagraphStyle = myInDesign.ActiveDocument.
ParagraphStyles.Item("BodyText")
Ajout de métadonnées XMP
Les métadonnées sont des informations qui permettent de décrire le contenu, l’origine ainsi que d’autres
attributs d’un fichier. Dans l’interface utilisateur d’InDesign, vous pouvez saisir, modifier ou afficher des
métadonnées grâce à la boîte de dialogue Informations (Fichier > Informations). Ces métadonnées
comprennent l’auteur, l’état du copyright et les dates de création et de modification du document, ainsi
que d’autres informations. Toutes ces données sont stockées au format XMP (Adobe Extensible Metadata
Platform), une norme ouverte qui permet d’incorporer des métadonnées dans un document.
Pour plus de détails sur le format XMP, consultez les spécifications XMP, à l’adresse suivante :
http://partners.adobe.com/asn/developer/pdf/MetadataFramework.pdf.
Vous pouvez également ajouter des informations XMP à un document en utilisant un script InDesign.
Toutes les propriétés XMP d’un document se trouvent dans l’objet metadataPreferences
(préférences des métadonnées) du document. L’exemple de script suivant permet de compléter
les données XMP d’un document :
Cet exemple montre également que les informations XMP sont extensibles. Si vous devez joindre des
métadonnées à un document mais que celles-ci ne rentrent pas dans l’une des catégories de l’objet
préférences des métadonnées, vous pouvez créer votre propre conteneur de métadonnées (un e-mail,
dans cet exemple).
Rem MetadataExample.vbs
Rem MetadataExample.vbs
Rem VBScript InDesign CS2
Rem Ajoute des métadonnées à un document exemple.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.Documents.Add
With myDocument.MetadataPreferences
.Author = "Olav Martin Kvern"
.CopyrightInfoURL = "http://www.adobe.com"
160
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
.CopyrightNotice = "This document is copyrighted."
.CopyrightStatus = idCopyrightStatus.idYes
.Description = "Example of xmp metadata scripting in InDesign CS"
.DocumentTitle = "XMP Example"
.JobName = "XMP_Example_2004"
.Keywords = Array("animal", "mineral", "vegetable")
Rem L’objet préférences des métadonnées comprend également les informations relatives à la
lecture seule,
Rem au créateur, au format, aux dates de création et de modification ainsi qu’aux
propriétés serverURL
Rem entrées et conservées automatiquement par InDesign.
Rem Créer un conteneur XMP personnalisé, "email"
.CreateContainerItem "http://ns.adobe.com/xap/1.0/", "email"
.SetProperty "http://ns.adobe.com/xap/1.0/", "email/*[1]", "[email protected]"
End With
Création d’un modèle de document
L’exemple suivant permet de créer un document, de déterminer les zones de fond perdu et de ligne-bloc,
d’ajouter des informations aux métadonnées XMP du document, de configurer des gabarits, d’insérer des
pieds de pages ainsi que des informations sur le travail dans un tableau à l’intérieur de la zone de lignebloc :
Rem DocumentTemplate.vbs
Rem VBScript InDesign CS2
Rem Crée un modèle de document, comprenant des gabarits, des calques,
Rem une couleur, des styles de paragraphe et de caractère, des repères et des informations XMP.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Définir en points les valeurs par défaut des unités de mesure de l’application.
myInDesign.ViewPreferences.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
myInDesign.ViewPreferences.VerticalMeasurementUnits = idMeasurementUnits.idPoints
Rem Définir les préférences de marges par défaut de l’application.
With myInDesign.MarginPreferences
Rem Enregistrer les préférences de marges par défaut actuelles de l’application.
myY1 = .Top
myX1 = .Left
myY2 = .Bottom
myX2 = .Right
Rem Définir les préférences de marges par défaut de l’application.
Rem La grille de ligne de base du document est définie sur 14 points, et
Rem toutes les marges définies par incréments de 14 points.
.Top = 14 * 4
.Left = 14 * 4
.Bottom = 74
.Right = 14 * 5
End With
Rem Créer un document.
Set myDocument = myInDesign.Documents.Add
myDocument.DocumentPreferences.PageWidth = "7i"
myDocument.DocumentPreferences.PageHeight = "9i"
myDocument.DocumentPreferences.PageOrientation = idPageOrientation.idPortrait
Rem A ce stade, vous pouvez rétablir les marges par défaut de l’application
Rem à leur état d’origine.
With myInDesign.MarginPreferences
.Top = myY1
.Left = myX1
.Bottom = myY2
.Right = myX2
End With
Rem Configurer les zones de fond perdu et de ligne-bloc.
With myDocument.DocumentPreferences
Rem Fond perdu
.DocumentBleedBottomOffset = "3p"
.DocumentBleedTopOffset = "3p"
.DocumentBleedInsideOrLeftOffset = "3p"
.DocumentBleedOutsideOrRightOffset = "3p"
Rem Ligne-bloc
.SlugBottomOffset = "18p"
.SlugTopOffset = "3p"
.SlugInsideOrLeftOffset = "3p"
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
.SlugRightOrOutsideOffset = "3p"
End With
Rem Définir une couleur.
Err.Clear
On Error Resume Next
Rem Si la couleur n’existe pas, InDesign renvoie une erreur.
Set myColor = myDocument.Colors.Item("PageNumberRed")
If Err.Number <> 0 Then
Set myColor = myDocument.Colors.Add
myColor.Name = "PageNumberRed"
myColor.colorModel = idColorModel.idProcess
myColor.ColorValue = Array(20, 100, 80, 10)
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Indiquer ensuite des styles par défaut.
Rem Créer un style de caractère pour les numéros de pages.
Err.Clear
On Error Resume Next
Rem Si le style de caractère n’existe pas, InDesign renvoie une erreur.
Set myCharacterStyle = myDocument.CharacterStyles.Item("page_number")
If Err.Number <> 0 Then
Set myCharacterStyle = myDocument.CharacterStyles.Add
myCharacterStyle.Name = "page_number"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
myDocument.CharacterStyles.Item("page_number").FillColor = myDocument.Colors.
Item("PageNumberRed")
Rem Créer une paire de styles de paragraphe pour le texte de pied de page.
Rem Ces styles appliquent une mise en page élémentaire.
Err.Clear
On Error Resume Next
Rem Si le style de paragraphe n’existe pas, InDesign renvoie une erreur.
Set myParagraphStyle = myDocument.ParagraphStyles.Item("footer_left")
If Err.Number <> 0 Then
Set myParagraphStyle = myDocument.ParagraphStyles.Add
myParagraphStyle.Name = "footer_left"
myParagraphStyle.PointSize = 11
myParagraphStyle.Leading = 14
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Err.Clear
On Error Resume Next
Rem Si le style de paragraphe n’existe pas, InDesign renvoie une erreur.
Set myParagraphStyle = myDocument.ParagraphStyles.Item("footer_right")
If Err.Number <> 0 Then
Set myParagraphStyle = myDocument.ParagraphStyles.Add
myParagraphStyle.Name = "footer_right"
myParagraphStyle.BasedOn = myDocument.ParagraphStyles.Item("footer_left")
myParagraphStyle.Justification = idJustification.idRightAlign
myParagraphStyle.PointSize = 11
myParagraphStyle.Leading = 14
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Créer un calque pour les repères.
Err.Clear
On Error Resume Next
Set myLayer = myDocument.Layers.Item("GuideLayer")
If Err.Number <> 0 Then
Set myLayer = myDocument.Layers.Add
myLayer.Name = "GuideLayer"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Créer un calque pour les éléments de pied de page.
161
162
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Err.Clear
On Error Resume Next
Set myLayer = myDocument.Layers.Item("Footer")
If Err.Number <> 0 Then
Set myLayer = myDocument.Layers.Add
myLayer.Name = "Footer"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Créer un calque pour les éléments de ligne-bloc.
Err.Clear
On Error Resume Next
Set myLayer = myDocument.Layers.Item("Slug")
If Err.Number <> 0 Then
Set myLayer = myDocument.Layers.Add
myLayer.Name = "Slug"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
Rem Créer un calque pour le corps de texte.
Err.Clear
On Error Resume Next
Set myLayer = myDocument.Layers.Item("BodyText")
If Err.Number <> 0 Then
Set myLayer = myDocument.Layers.Add
myLayer.Name = "BodyText"
Err.Clear
End If
Rem Rétablir la gestion normale des erreurs.
On Error GoTo 0
With myDocument.ViewPreferences
.RulerOrigin = idRulerOrigin.idPageOrigin
.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
.VerticalMeasurementUnits = idMeasurementUnits.idPoints
End With
Rem Grille de ligne de base du document et grille du document
With myDocument.GridPreferences
.BaselineStart = 56
.BaselineDivision = 14
.BaselineGridShown = False
.HorizontalGridlineDivision = 14
.HorizontalGridSubdivision = 5
.VerticalGridlineDivision = 14
.VerticalGridSubdivision = 5
.DocumentGridShown = False
End With
Rem Informations XMP du document.
With myDocument.MetadataPreferences
.Author = "Olav Martin Kvern"
.CopyrightInfoURL = "http:rem www.adobe.com"
.CopyrightNotice = "This document is not copyrighted."
.CopyrightStatus = idCopyrightStatus.idNo
.Description = "Example 7 x 9 book layout"
.DocumentTitle = "Example"
.JobName = "7 x 9 book layout template"
.Keywords = Array("7 x 9", "book", "template")
.CreateContainerItem "http://ns.adobe.com/xap/1.0/", "email"
.SetProperty "http://ns.adobe.com/xap/1.0/", "email/*[1]", "[email protected]"
End With
Rem Configurer la planche type.
With myDocument.MasterSpreads.Item(1)
With .Pages.Item(1)
Rem La gauche et la droite sont inversées pour les pages de gauche (devenant
« intérieur » et « extérieur » ;
Rem valable également dans l’interface utilisateur InDesign).
myTopMargin = .MarginPreferences.Top
myBottomMargin = myDocument.DocumentPreferences.PageHeight - .MarginPreferences.Bottom
myRightMargin = myDocument.DocumentPreferences.PageWidth - .MarginPreferences.Left
myLeftMargin = .MarginPreferences.Right
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
163
.Orientation = idHorizontalOrVertical.idVertical
.Location = myLeftMargin
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idVertical
.Location = myRightMargin
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = myTopMargin
.FitToPage = False
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = myBottomMargin
.FitToPage = False
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = myBottomMargin + 14
.FitToPage = False
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idHorizontal
.Location = myBottomMargin + 28
.FitToPage = False
End With
Set myLeftFooter = .TextFrames.Add
myLeftFooter.ItemLayer = myDocument.Layers.Item("Footer")
myLeftFooter.GeometricBounds = Array(myBottomMargin + 14, .MarginPreferences.Right,
myBottomMargin + 28, myRightMargin)
myLeftFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idSectionMarker
myLeftFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idEmSpace
myLeftFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idAutoPageNumber
myLeftFooter.ParentStory.Characters.Item(1).AppliedCharacterStyle = myDocument.
CharacterStyles.Item("page_number")
myLeftFooter.ParentStory.Paragraphs.Item(1).ApplyStyle myDocument.ParagraphStyles.
Item("footer_left"), False
Rem Informations sur la ligne-bloc.
myDate = Date
With myDocument.MetadataPreferences
myString = "Author:" & vbTab & .Author & vbTab & "Description:" & vbTab &
.Description & vbCrLf & _
"Creation Date:" & vbTab & myDate & vbTab & "Email Contact" & vbTab &
.GetProperty("http://ns.adobe.com/xap/1.0/", "email/*[1]")
End With
Set myLeftSlug = .TextFrames.Add
myLeftSlug.ItemLayer = myDocument.Layers.Item("Slug")
myLeftSlug.GeometricBounds = Array(myDocument.DocumentPreferences.PageHeight + 36,
.MarginPreferences.Right, myDocument.DocumentPreferences.PageHeight + 144, myRightMargin)
myLeftSlug.Contents = myString
myLeftSlug.ParentStory.Texts.Item(1).ConvertToTable
Rem Bloc de texte type du corps de texte.
Set myLeftFrame = .TextFrames.Add
myLeftFrame.ItemLayer = myDocument.Layers.Item("BodyText")
myLeftFrame.GeometricBounds = Array(.MarginPreferences.Top, .MarginPreferences.Right,
myBottomMargin, myRightMargin)
End With
With .Pages.Item(2)
myTopMargin = .MarginPreferences.Top
myBottomMargin = myDocument.DocumentPreferences.PageHeight - .MarginPreferences.Bottom
myRightMargin = myDocument.DocumentPreferences.PageWidth - .MarginPreferences.Right
myLeftMargin = .MarginPreferences.Left
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
164
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
.Orientation = idHorizontalOrVertical.idVertical
.Location = myLeftMargin
End With
With .Guides.Add
.ItemLayer = myDocument.Layers.Item("GuideLayer")
.Orientation = idHorizontalOrVertical.idVertical
.Location = myRightMargin
End With
Set myRightFooter = .TextFrames.Add
myRightFooter.ItemLayer = myDocument.Layers.Item("Footer")
myRightFooter.GeometricBounds = Array(myBottomMargin + 14, .MarginPreferences.Left,
myBottomMargin + 28, myRightMargin)
myRightFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idAutoPageNumber
myRightFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idEmSpace
myRightFooter.ParentStory.InsertionPoints.Item(1).Contents = idSpecialCharacters.
idSectionMarker
myRightFooter.ParentStory.Characters.Item(-1).AppliedCharacterStyle = myDocument.
CharacterStyles.Item("page_number")
myRightFooter.ParentStory.Paragraphs.Item(1).ApplyStyle myDocument.ParagraphStyles.
Item("footer_right"), False
Rem Informations sur la ligne-bloc.
Set myRightSlug = .TextFrames.Add
myRightSlug.ItemLayer = myDocument.Layers.Item("Slug")
myRightSlug.GeometricBounds = Array(myDocument.DocumentPreferences.PageHeight + 36,
myLeftMargin, myDocument.DocumentPreferences.PageHeight + 144, myRightMargin)
myRightSlug.Contents = myString
myRightSlug.ParentStory.Texts.Item(1).ConvertToTable
Rem Bloc de texte type du corps de texte.
Set myRightFrame = .TextFrames.Add
myRightFrame.ItemLayer = myDocument.Layers.Item("BodyText")
myRightFrame.GeometricBounds = Array(.MarginPreferences.Top, .MarginPreferences.Left,
myBottomMargin, myRightMargin)
myRightFrame.PreviousTextFrame = myLeftFrame
End With
End With
Rem Insérer un texte de marque de section ; celui-ci apparaîtra dans le pied de page.
myDocument.Sections.Item(1).Marker = "Section 1"
Rem Lorsque vous liez les blocs de texte du gabarit, l’un d’entre eux
Rem est parfois sélectionné. Désélectionnez-le.
myInDesign.Select idNothingEnum.idNothing
Impression d’un document
Le script suivant permet d’imprimer le document actif à l’aide des préférences d’impression actuelles :
Rem PrintDocument.vbs
Rem VBScript InDesign CS2
Rem Imprime le document actif.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem La méthode PrintOut peut accepter deux paramètres facultatifs :
Rem PrintDialog, s’il est activé, pour afficher la boîte de dialogue d’impression.
Rem Using, pour indiquer l’impression prédéfinie à utiliser. L’instruction suivante
Rem permet d’imprimer le document à l’aide des paramètres par défaut et
Rem sans afficher la boîte de dialogue d’impression.
myInDesign.ActiveDocument.PrintOut False
Impression à l’aide de groupes de pages
Pour définir un groupe de pages à imprimer, configurez les propriétés PageRange dans l’objet
PrintPreferences du document avant d’imprimer :
Rem
Rem
Rem
Set
Rem
Set
PrintPageRange.vbs
VBScript InDesign CS2
Imprime un groupe de pages à partir du document actif.
myInDesign = CreateObject("InDesign.Application.CS2")
Créer un document exemple.
myDocument = myInDesign.Documents.Add
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
165
myDocument.ViewPreferences.RulerOrigin = idRulerOrigin.idPageOrigin
myPageHeight = myDocument.DocumentPreferences.PageHeight
myPageWidth = myDocument.DocumentPreferences.PageWidth
myDocument.DocumentPreferences.PagesPerDocument = 10
Set myMasterSpread = myDocument.MasterSpreads.Item(1)
Set myTextFrame = myMasterSpread.Pages.Item(1).TextFrames.Add
myTextFrame.GeometricBounds = Array(0, 0, myPageHeight, myPageWidth)
myTextFrame.Contents = idSpecialCharacters.idAutoPageNumber
myTextFrame.Paragraphs.Item(1).Justification = idJustification.idCenterAlign
myTextFrame.Paragraphs.Item(1).PointSize = 72
myTextFrame.TextFramePreferences.VerticalJustification = idVerticalJustification.idCenterAlign
Set myTextFrame = myMasterSpread.Pages.Item(2).TextFrames.Add
myTextFrame.GeometricBounds = Array(0, 0, myPageHeight, myPageWidth)
myTextFrame.Contents = idSpecialCharacters.idAutoPageNumber
myTextFrame.Paragraphs.Item(1).Justification = idJustification.idCenterAlign
myTextFrame.Paragraphs.Item(1).PointSize = 72
myTextFrame.TextFramePreferences.VerticalJustification = idVerticalJustification.idCenterAlign
For myCounter = 1 To myDocument.Pages.Count
myDocument.Pages.Item(myCounter).AppliedMaster = myDocument.MasterSpreads.Item("A-Master")
Next
Rem Fin de la configuration du document exemple.
Rem Le groupe de pages peut être constitué de idPageRange.idAllPages (toutes les pages) ou d’une
chaîne de groupe de pages.
Rem Un numéro de page saisi dans le groupe de pages doit correspondre à un
Rem nom de page dans le document (et non à l’indice de page, par exemple). Si le nom de page
n’est
Rem pas trouvé, InDesign affiche un message d’erreur.
myInDesign.ActiveDocument.PrintPreferences.PageRange = "1-3, 6, 9"
myInDesign.ActiveDocument.PrintOut False
Configuration des préférences d’impression
L’objet PrintPreferences comprend des propriétés correspondant aux options des volets de la boîte
de dialogue d’impression. Cet exemple de script indique comment définir les préférences d’impression à
l’aide d’un script.
Rem PrintPreferences.vbs
Rem VBScript InDesign CS2
Rem Définit les préférences d’impression du document actif.
Set myInDesign = CreateObject("InDesign.Application.CS2")
With myInDesign.ActiveDocument.PrintPreferences
Rem Propriétés correspondant aux commandes du volet Général de la boîte de dialogue
d’impression.
Rem ActivePrinterPreset est ignoré dans le présent exemple ; spécifiez vos préférences
d’impression.
Rem L’imprimante peut être soit une chaîne (le nom de l’imprimante), soit idPrinter.
idPostscriptFile.
.Printer = "AGFA-SelectSet 5000SF v2013.108"
Rem Si la propriété de l’imprimante correspond au nom d’une imprimante, alors la propriété
du fichier ppd
Rem est verrouillée (entraînant un message d’erreur si vous essayez de la configurer).
Rem ppd = "AGFA-SelectSet5000SF"
Rem Si la propriété de l’imprimante indique un fichier Postscript, la propriété
Rem la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez
de la configurer.
.Copies = 1
Rem Si la propriété de l’imprimante indique un fichier Printer.postscript, ou si
Rem l’imprimante sélectionnée ne prend pas en charge l’assemblage, alors
Rem la propriété d’assemblage n’est pas disponible. Une erreur se produira si vous essayez
de la configurer.
Rem collating = false
.ReverseOrder = False
Rem Le groupe de pages peut être constitué de toutes les pages ou d’une chaîne de groupe de
pages.
.PageRange = idPageRange.idAllPages
.PrintSpreads = False
.PrintMasterPages = False
Rem Si la propriété de l’imprimante indique un fichier Printer.postScript, alors
Rem la propriété du fichier d’impression comprend le chemin du fichier de sortie.
Rem printFile = "/c/test.ps"
.Sequence = idSequences.idAll
166
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Rem Si le recouvrement est configuré sur idTrapping.idApplicationBuiltIn ou idTrapping.
idAdobeInRIP,
Rem une erreur se produira si vous configurez les propriétés suivantes :
If (.ColorOutput = idColorOutputModes.idInRIPSeparations) Or _
(.ColorOutput = idColorOutputModes.idSeparations) Then
If .Trapping = idTrapping.idOff Then
.PrintBlankPages = False
.PrintGuidesGrids = False
.PrintNonprinting = False
End If
End If
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Format de la boîte de dialogue
d’impression.
Rem -------------------------------------------------------------------------------.PaperSize = idPaperSizes.idCustom
Rem La largeur et la hauteur de page sont ignorées si le format du papier n’est pas
personnalisé.
Rem .PaperHeight = 1200
Rem .PaperWidth = 1200
.PrintPageOrientation = idPrintPageOrientation.idPortrait
.PagePosition = idPagePositions.idCentered
.PaperGap = 0
.PaperOffset = 0
.PaperTransverse = False
.ScaleHeight = 100
.ScaleWidth = 100
.ScaleMode = idScaleModes.idScaleWidthHeight
.ScaleProportional = True
Rem Si le recouvrement est configuré sur idTrapping.idApplicationBuiltIn ou idTrapping.
idAdobeInRIP,
Rem une erreur se produira si vous configurez les propriétés suivantes :
If (.ColorOutput = idColorOutputModes.idInRIPSeparations) Or _
(.ColorOutput = idColorOutputModes.idSeparations) Then
If .Trapping = idTrapping.idOff Then
.TextAsBlack = False
.Thumbnails = False
Rem Les propriétés suivantes ne sont pas nécessaires car la valeur false est
attribuée aux vignettes :
Rem thumbnailsPerPage = 4
.Tile = False
Rem Les propriétés suivantes ne sont pas nécessaires car la valeur false est
attribuée à la mosaïque :
Rem .TilingOverlap = 12
Rem .TilingType = TilingTypes.auto
End If
End If
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Repères et fonds perdus de la boîte de
dialogue d’impression.
Rem -------------------------------------------------------------------------------Rem Attribuer la valeur true aux propriétés suivantes pour imprimer tous les repères
d’impression.
Rem allPrinterMarks = true
.UseDocumentBleedToPrint = False
Rem Si l’utilisation du fond perdu pour l’impression est désactivée, alors la configuration
de l’une des propriétés de fond perdu
Rem entraînera une erreur.
Rem Extraire les valeurs du fond perdu du document et les augmenter.
.BleedBottom = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedBottomOffset + 3
.BleedTop = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedTopOffset + 3
.BleedInside = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedInsideOrLeftOffset
+ 3
.BleedOutside = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedOutsideOrRightOff
set + 3
Rem Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères
de marge.
If ((.BleedBottom = 0) And (.BleedTop = 0) And (.BleedInside = 0) And (.BleedOutside = 0))
Then
.BleedMarks = True
Else
.BleedMarks = False
End If
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
167
.ColorBars = True
.CropMarks = True
.IncludeSlugToPrint = False
.MarkLineWeight = idMarkLineWeight.idP125pt
.MarkOffset = 6
Rem .MarkType = MarkTypes.default
.PageInformationMarks = True
.RegistrationMarks = True
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Sortie de la boîte de dialogue
d’impression.
Rem -------------------------------------------------------------------------------.Negative = True
.ColorOutput = idColorOutputModes.idSeparations
Rem Remarquez le « i » minuscule dans « Builtin ».
.Trapping = idTrapping.idApplicationBuiltin
.Screening = "175 lpi/2400 dpi"
.Flip = idFlip.idNone
Rem Les options suivantes ne peuvent s’appliquer que si le recouvrement est configuré sur
Rem idTrapping.idAdobeInRIP.
If .Trapping = idTrapping.idAdobeInRIP Then
.PrintBlack = True
.PrintCyan = True
.PrintMagenta = True
.PrintYellow = True
End If
Rem Ne modifiez que l’angle de projection de l’encre et la fréquence si vous souhaitez
remplacer
Rem le tramage par celui spécifié par la propriété de tramage.
Rem .BlackAngle = 45
Rem .BlackFrequency = 175
Rem .CyanAngle = 15
Rem .CyanFrequency = 175
Rem .MagentaAngle = 75
Rem .MagentaFreqency = 175
Rem .YellowAngle = 0
Rem .YellowFrequency = 175
Rem Les propriétés suivantes ne sont pas nécessaires (car la sortie en couleurs est définie
sur séparations).
Rem .CompositeAngle = 45
Rem .CompositeFrequency = 175
Rem .SimulateOverprint = false
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Graphiques de la boîte de dialogue
d’impression.
Rem -------------------------------------------------------------------------------.SendImageData = idImageDataTypes.idAllImageData
.FontDownloading = idFontDownloading.idComplete
Err.Clear
On Error Resume Next
.DownloadPPDFonts = True
.DataFormat = idDataFormat.idBinary
.PostScriptLevel = idPostScriptLevels.idLevel3
If Err.Number <> 0 Then
Err.Clear
End If
On Error GoTo 0
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Gestion des couleurs de la boîte de
dialogue d’impression.
Rem -------------------------------------------------------------------------------Rem Si la valeur false est attribuée aux propriétés d’utilisation de gestion des couleurs
dans les options de couleur myInDesign.ColorSettings,
Rem une erreur se produira si vous essayez de configurer les propriétés suivantes :
Err.Clear
On Error Resume Next
.SourceSpace = SourceSpaces.useDocument
.Intent = RenderingIntent.useColorSettings
.CRD = ColorRenderingDictionary.useDocument
.Profile = Profile.postscriptCMS
If Err.Number <> 0 Then
Err.Clear
End If
168
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
On Error GoTo 0
Rem -------------------------------------------------------------------------------Rem Propriétés correspondant aux commandes du volet Avancé de la boîte de dialogue
d’impression.
Rem -------------------------------------------------------------------------------.OPIImageReplacement = False
.OmitBitmaps = False
.OmitEPS = False
.OmitPDF = False
Rem L’instruction suivante suppose l’existence d’un aplatissement prédéfini nommé "high
quality flattener".
Err.Clear
On Error Resume Next
.FlattenerPresetName = "high quality flattener"
If Err.Number <> 0 Then
Err.Clear
End If
On Error GoTo 0
.IgnoreSpreadOverrides = False
End With
Création d’impressions prédéfinies à partir des préférences d’impression
Pour créer une impression prédéfinie à partir des préférences d’impression d’un document :
Rem CreatePrinterPreset.vbs
Rem VBScript InDesign CS2
Rem Crée une impression prédéfinie d’après les paramètres d’impression du document actif.
Rem Suppose que vous disposez d’un document ouvert.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Si le paramètre prédéfini n’existe pas, créez-le ;
Rem sinon, renseignez les propriétés du paramètre prédéfini existant.
Err.Clear
On Error Resume Next
Set myPreset = myInDesign.PrinterPresets.Item("myPreset")
If Err.Number <> 0 Then
Set myPreset = myInDesign.PrinterPresets.Add
myPreset.Name = "myPreset"
Err.Clear
End If
On Error GoTo 0
With myInDesign.ActiveDocument.PrintPreferences
Rem Le nombre de propriétés d’impression découlant d’autres propriétés d’impression,
Rem les lignes relatives à la configuration d’une propriété sont encadrées des instructions
Rem on error resume next...on error goto 0 de manière à faciliter l’appréhension de la
configuration des impressions prédéfinies,
Rem mais vous devrez les supprimer pour détecter des erreurs dans votre script si vous
utilisez cet exemple
Rem comme modèle pour vos scripts.
Err.Clear
On Error Resume Next
myPreset.Printer = .Printer
myPreset.ColorOutput = .ColorOutput
myPreset.PPD = .PPD
myPreset.Copies = .Copies
myPreset.Collating = .Collating
myPreset.ReverseOrder = .ReverseOrder
myPreset.PageRange = .PageRange
myPreset.PrintSpreads = .PrintSpreads
myPreset.PrintMasterPages = .PrintMasterPages
myPreset.PrintFile = .PrintFile
myPreset.Sequence = .Sequence
myPreset.PrintBlankPages = .PrintBlankPages
myPreset.PrintGuidesGrids = .PrintGuidesGrids
myPreset.PrintNonprinting = .PrintNonprinting
myPreset.PaperSize = .PaperSize
myPreset.PaperHeight = .PaperHeight
myPreset.PaperWidth = .PaperWidth
myPreset.PrintPageOrientation = .PrintPageOrientation
myPreset.PagePosition = .PagePosition
myPreset.PaperGap = .PaperGap
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
myPreset.PaperOffset = .PaperOffset
myPreset.PaperTransverse = .PaperTransverse
myPreset.ScaleHeight = .ScaleHeight
myPreset.ScaleWidth = .ScaleWidth
myPreset.ScaleMode = .ScaleMode
myPreset.ScaleProportional = .ScaleProportional
myPreset.TextAsBlack = .TextAsBlack
myPreset.Thumbnails = .Thumbnails
myPreset.ThumbnailsPerPage = .ThumbnailsPerPage
myPreset.Tile = .Tile
myPreset.TilingType = .TilingType
myPreset.TilingOverlap = .TilingOverlap
myPreset.AllPrinterMarks = .AllPrinterMarks
myPreset.UseDocumentBleedToPrint = .UseDocumentBleedToPrint
myPreset.BleedBottom = .BleedBottom
myPreset.BleedTop = .BleedTop
myPreset.BleedInside = .BleedInside
myPreset.BleedOutside = .BleedOutside
myPreset.BleedMarks = .BleedMarks
myPreset.ColorBars = .ColorBars
myPreset.CropMarks = .CropMarks
myPreset.IncludeSlugToPrint = .IncludeSlugToPrint
myPreset.MarkLineWeight = .MarkLineWeight
myPreset.MarkOffset = .MarkOffset
myPreset.MarkType = .MarkType
myPreset.PageInformationMarks = .PageInformationMarks
myPreset.RegistrationMarks = .RegistrationMarks
myPreset.Negative = .Negative
myPreset.Trapping = .Trapping
myPreset.Screening = .Screening
myPreset.Flip = .Flip
myPreset.PrintBlack = .PrintBlack
myPreset.PrintCyan = .PrintCyan
myPreset.PrintMagenta = .PrintMagenta
myPreset.PrintYellow = .PrintYellow
myPreset.BlackAngle = .BlackAngle
myPreset.BlackFrequency = .BlackFrequency
myPreset.CyanAngle = .CyanAngle
myPreset.CyanFrequency = .CyanFrequency
myPreset.MagentaAngle = .MagentaAngle
myPreset.magentaFreqency = .magentaFreqency
myPreset.YellowAngle = .YellowAngle
myPreset.YellowFrequency = .YellowFrequency
myPreset.CompositeAngle = .CompositeAngle
myPreset.CompositeFrequency = .CompositeFrequency
myPreset.SimulateOverprint = .SimulateOverprint
myPreset.SendImageData = .SendImageData
myPreset.FontDownloading = .FontDownloading
myPreset.DownloadPPDFonts = .DownloadPPDFonts
myPreset.DataFormat = .DataFormat
myPreset.PostScriptLevel = .PostScriptLevel
myPreset.SourceSpace = .SourceSpace
myPreset.Intent = .Intent
myPreset.CRD = .CRD
myPreset.Profile = .Profile
myPreset.OPIImageReplacement = .OPIImageReplacement
myPreset.OmitBitmaps = .OmitBitmaps
myPreset.OmitEPS = .OmitEPS
myPreset.OmitPDF = .OmitPDF
myPreset.FlattenerPresetName = .FlattenerPresetName
myPreset.IgnoreSpreadOverrides = .IgnoreSpreadOverrides
MsgBox "Done!"
If Err.Number <> 0 Then
Err.Clear
End If
On Error GoTo 0
End With
169
170
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Exportation d’un document au format PDF
Le script InDesign permet de gérer entièrement la création de fichiers PDF depuis vos documents de mise
en page.
Utilisation des options d’exportation PDF actuelles
Le script suivant permet d’exporter le document actif au format PDF à l’aide d’un paramètre prédéfini
d’exportation PDF :
Rem ExportPDF.vbs
Rem VBScript InDesign CS2
Rem Exporte le document actif en PDF.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Suppose que vous disposez d’un document ouvert.
Rem Les paramètres d’exportation du document sont les suivants :
Rem Format de fichier (format) : utilisez la constante idExportFormat.idPDFType ou la chaîne
« Adobe PDF » ;
Rem fichier de destination (to) : chemin de fichier sous forme de chaîne de caractères ;
Rem options d’affichage booléennes : attribuer la valeur true permet l’affichage de la boîte de
dialogue d’exportation PDF ;
Rem paramètre à utiliser (using) : paramètre prédéfini d’exportation PDF (ou une chaîne
correspondant au nom d’un paramètre prédéfini d’exportation PDF).
Rem Les noms par défaut des paramètres prédéfinis d’exportation PDF sont entourés de crochets
(par exemple, "[Screen]").
myInDesign.ActiveDocument.Export idExportFormat.idPDFType, "c:\myTestDocument.pdf", False,
myInDesign.PDFExportPresets.Item("[Press]")
Configuration des options d’exportation PDF
L’exemple suivant permet de configurer les options d’exportation PDF avant l’exportation :
Rem ExportPDFWithOptions.vbs
Rem VBScript InDesign CS2
Rem Définit les options d’exportation PDF, puis exporte le document actif au format PDF.
Set myInDesign = CreateObject("InDesign.Application.CS2")
With myInDesign.PDFExportPreferences
Rem Options de sortie PDF standard.
.PageRange = idPageRange.idAllPages
.AcrobatCompatibility = idAcrobatCompatibility.idAcrobat6
.ExportGuidesAndGrids = False
.ExportLayers = False
.ExportNonprintingObjects = False
.ExportReaderSpreads = False
.GenerateThumbnails = False
On Error Resume Next
.IgnoreSpreadOverrides = False
.IncludeICCProfiles = True
On Error GoTo 0
.IncludeBookmarks = True
.IncludeHyperlinks = True
.IncludeSlugWithPDF = False
.IncludeStructure = False
.InteractiveElements = False
Rem Attribuer la valeur zéro à l’option jeu partiel des polices au-dessous de désactive le
jeu partiel des polices ;
Rem attribuer une autre valeur pour utiliser le jeu partiel des polices.
.SubsetFontsBelow = 0
Rem Options de qualité/échantillonnage/compression Bitmap (notez le « s » supplémentaire
dans « compression »).
.ColorBitmapCompression = idBitmapCompression.idZip
.ColorBitmapQuality = idCompressionQuality.idEightBit
.ColorBitmapSampling = idSampling.idNone
Rem Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs dans le présent
exemple.
Rem Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap
couleurs lorsque celui-ci n’est pas activé (none).
.GrayscaleBitmapCompression = idBitmapCompression.idZip
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
171
.GrayscaleBitmapQuality = idCompressionQuality.idEightBit
.GrayscaleBitmapSampling = idSampling.idNone
Rem Il n’est pas nécessaire d’indiquer un seuil de compression des niveaux de gris dans cet
exemple.
Rem Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap en
niveaux de gris lorsque celui-ci n’est pas activé (none).
.MonochromeBitmapCompression = idBitmapCompression.idZip
.MonochromeBitmapSampling = idSampling.idNone
Rem Il n’est pas nécessaire d’indiquer un seuil de compression des couleurs monochromes dans
le présent exemple.
Rem Il n’est pas nécessaire d’indiquer la valeur ppp pour l’échantillonnage de bitmap
monochromes lorsque celui-ci n’est pas activé (none).
Rem Autres options de compression.
.CompressionType = idPDFCompressionType.idCompressNone
.CompressTextAndLineArt = True
.ContentToEmbed = idPDFContentToEmbed.idEmbedAll
.CropImagesToFrames = True
.OptimizePDF = True
Rem Options de prépresse et repères d’imprimantes.
Rem Extraire les valeurs du fond perdu du document.
.BleedBottom = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedBottomOffset
.BleedTop = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedTopOffset
.BleedInside = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedInsideOrLeftOffset
.BleedOutside = myInDesign.ActiveDocument.DocumentPreferences.DocumentBleedOutsideOrRightOf
fset
Rem Si une zone de fond perdu est supérieure à zéro, vous devez alors exporter les repères
de marge.
If ((.BleedBottom = 0) And (.BleedTop = 0) And (.BleedInside = 0) And (.BleedOutside = 0))
Then
.BleedMarks = True
Else
.BleedMarks = False
End If
.ColorBars = True
Rem La taille des carreaux en couleurs et en niveaux de gris n’est utilisée que lorsque
Rem le format d’exportation choisi est JPEG2000.
Rem .ColorTileSize = 256
Rem .GrayTileSize = 256
.CropMarks = True
.OmitBitmaps = False
.OmitEPS = False
.OmitPDF = False
.PageInformationMarks = True
.PageMarksOffset = 12
.PDFColorSpace = idPDFColorSpace.idUnchangedColorSpace
.PDFMarkType = idMarkTypes.idDefault
.PrinterMarkWeight = idPDFMarkWeight.idP125pt
.RegistrationMarks = True
On Error Resume Next
.SimulateOverprint = False
On Error GoTo 0
.UseDocumentBleedWithPDF = True
Rem Attribuer à viewPDF la valeur true pour ouvrir le PDF dans Acrobat ou Adobe Reader.
.ViewPDF = False
End With
Rem Exportez maintenant le document. Spécifiez le chemin de votre fichier.
myInDesign.ActiveDocument.Export idExportFormat.idPDFType, "c:\myTestDocument.pdf", False
Exportation d’un groupe de pages
L’exemple suivant indique comment exporter un groupe de pages spécifique au format PDF :
Rem ExportPageRangeAsPDF.vbs
Rem VBScript InDesign CS2
Rem Exporte un groupe de pages dans un fichier PDF.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Entrer le nom des pages à exporter dans l’instruction suivante.
Rem Notez que le nom de la page n’est pas nécessairement l’indice de la page dans le
Rem document (par exemple, la première page d’un document dont la numérotation commence
Rem à 21 sera la page « 21 », et non 1).
myInDesign.PDFExportPreferences.PageRange = "1-3, 6, 9"
172
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
Rem Spécifiez le chemin de votre fichier.
myFile = "c:\myTestFile.pdf"
myInDesign.ActiveDocument.Export idExportFormat.idPDFType, myFile, False
Exportation de pages individuelles
L’exemple suivant permet d’exporter chaque page d’un document en fichier PDF individuel :
Rem ExportEachPageAsPDF.vbs
Rem VBScript InDesign CS2
Rem Exporte chaque page d’un document InDesign CS en tant que fichier PDF individuel dans
Rem un dossier sélectionné, à l’aide des paramètres d’exportation PDF actuels.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
If myInDesign.Documents.Count <> 0 Then
Set myDocument = myInDesign.ActiveDocument
Rem Etant donné que l’instruction "get folder" n’est pas native dans VBScript,
Rem le JavaScript d’InDesign permet d’afficher un explorateur de dossiers.
myJavaScript = "myFolder = Folder.selectDialog(""Choose a Folder""); myFolderName =
myFolder.fsName;"
Rem Exécuter la chaîne "myJavaScript" en tant que JavaScript.
myFolderName = myInDesign.DoScript(myJavaScript, idScriptLanguage.idJavascript)
If myFileSystemObject.FolderExists(myFolderName) Then
myExportPages myInDesign, myDocument, myFolderName
End If
End If
Function myExportPages(myInDesign, myDocument, myFolderName)
myDocumentName = myDocument.Name
Set myDialog = myInDesign.Dialogs.Add
With myDialog
.Name = "ExportPages"
With .DialogColumns.Add
With .DialogRows.Add
With .StaticTexts.Add
.StaticLabel = "Base Name:"
End With
Set myBaseNameField = .TextEditboxes.Add
myBaseNameField.EditContents = myDocumentName
myBaseNameField.MinWidth = 160
End With
End With
End With
myResult = myDialog.Show
If myResult = True Then
myBaseName = myBaseNameField.EditContents
Rem Supprimer la boîte de dialogue de la mémoire.
myDialog.Destroy
For myCounter = 1 To myDocument.Pages.Count
myPageName = myDocument.Pages.Item(myCounter).Name
myInDesign.PDFExportPreferences.PageRange = myPageName
Rem Générer un chemin de fichier à partir du nom de dossier, du nom du document de
base
Rem et du nom de la page.
Rem Remplacer le caractère deux-points dans le nom de la page (par exemple,
« Sec1:1 ») par un trait de soulignement.
myPageName = Replace(myPageName, ":", "_")
myFilePath = myFolderName & "\" & myBaseName & "_" & myPageName & ".pdf"
myDocument.Export idExportFormat.idPDFType, myFilePath, False
Next
Else
myDialog.Destroy
End If
End Function
Adobe InDesign CS2 Guide des scripts
Utilisation de documents dans VBScript
173
Exportation de pages au format EPS
Lorsque vous exportez un document au format EPS, InDesign enregistre chaque page du fichier en tant
que graphique EPS individuel (par définition, un fichier EPS ne peut comprendre qu’une seule page).
Si vous exportez plusieurs pages, InDesign ajoute l’indice de la page au nom de fichier. L’indice de la
page dans le document n’est pas nécessairement le nom de la page (tel qu’il est défini par les options de
section pour la section comprenant la page en question).
Exportation de toutes les pages
Le script suivant permet d’exporter les pages du document actif dans un ou plusieurs fichiers EPS :
Rem ExportAsEPS.vbs
Rem VBScript InDesign CS2
Rem Exporte les pages du document actif en une série de fichiers EPS.
Set myInDesign = CreateObject("InDesign.Application.CS2")
myFile = "c:\myTestFile.eps"
myInDesign.ActiveDocument.Export idExportFormat.idEPSType, myFile, False
Exportation d’un groupe de pages
Pour contrôler les pages à exporter en EPS, attribuez à la propriété PageRange des préférences
d’exportation EPS une chaîne de groupe de pages comprenant les pages que vous souhaitez exporter
avant l’exportation :
Rem ExportPageRangeAsEPS.vbs
Rem VBScript InDesign CS2
Rem Exporte un groupe de pages en fichiers EPS.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Rem Entrer le nom de la page à exporter dans l’instruction suivante.
Rem Notez que le nom de la page n’est pas nécessairement l’indice de la page dans le
Rem document (par exemple, la première page d’un document dont la numérotation commence
Rem à 21 sera la page « 21 », et non 1).
myInDesign.EPSExportPreferences.PageRange = "1-3, 6, 9"
Rem Spécifiez le chemin de votre fichier.
myFile = "c:\myTestFile.eps"
myInDesign.ActiveDocument.Export idExportFormat.idEPSType, myFile, False
Contrôle d’autres options d’exportation
Outre le groupe de pages, vous pouvez contrôler d’autres options d’exportation EPS à l’aide d’un script en
définissant les propriétés de l’objet EpsExportPreferences :
Rem ExportEachPageAsEPS.vbs
Rem VBScript InDesign CS2
Rem Exporte chaque page d’un document InDesign CS en tant que fichier EPS individuel dans
Rem un dossier sélectionné à l’aide des paramètres d’exportation EPS actuels.
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
If myInDesign.Documents.Count <> 0 Then
Set myDocument = myInDesign.ActiveDocument
Rem Etant donné que l’instruction "get folder" n’est pas native dans VBScript,
Rem le JavaScript d’InDesign permet d’afficher un explorateur de dossiers.
myJavaScript = "myFolder = Folder.selectDialog(""Choose a Folder""); myFolderName =
myFolder.fsName;"
Rem Exécuter la chaîne "myJavaScript" en tant que JavaScript.
myFolderName = myInDesign.DoScript(myJavaScript, idScriptLanguage.idJavascript)
If myFileSystemObject.FolderExists(myFolderName) Then
myExportEPSPages myInDesign, myDocument, myFolderName
End If
End If
Function myExportEPSPages(myInDesign, myDocument, myFolderName)
myDocumentName = myDocument.Name
Set myDialog = myInDesign.Dialogs.Add
With myDialog
174
Utilisation de documents dans VBScript
Adobe InDesign CS2 Guide des scripts
.Name = "ExportPages"
With .DialogColumns.Add
With .DialogRows.Add
With .StaticTexts.Add
.StaticLabel = "Base Name:"
End With
Set myBaseNameField = .TextEditboxes.Add
myBaseNameField.EditContents = myDocumentName
myBaseNameField.MinWidth = 160
End With
End With
End With
myResult = myDialog.Show
If myResult = True Then
myBaseName = myBaseNameField.EditContents
Rem Supprimer la boîte de dialogue de la mémoire.
myDialog.Destroy
For myCounter = 1 To myDocument.Pages.Count
myPageName = myDocument.Pages.Item(myCounter).Name
myInDesign.EPSExportPreferences.PageRange = myPageName
Rem Générer un chemin de fichier à partir du nom de dossier, du nom du document de
base
Rem et du nom de la page.
Rem Remplacer le caractère deux-points dans le nom de la page (par exemple,
« Sec1:1 ») par un trait de soulignement.
myPageName = Replace(myPageName, ":", "_")
myFilePath = myFolderName & "\" & myBaseName & "_" & myPageName & ".eps"
myDocument.Export idExportFormat.idEPSType, myFilePath, False
Next
Else
myDialog.Destroy
End If
End Function

Documents pareils