CS6InchangéAucune garantie d'actualité du contenu.
Didacticiel de scripts Adobe®InDesign®CS6
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.
Nous attirons votre attention sur le fait que les illustrations ou images que vous pouvez être amené à incorporer à vos
projets peuvent être protégées par des droits d’auteur, auquel cas leur exploitation sans l’autorisation de l’auteur
constituerait une violation de ces droits. Veillez à obtenir toutes les autorisations requises de la part des auteurs.
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 logoAdobe, CreativeSuite, InDesign, Illustrator et Photoshop sont des marques ou des marques déposées
d’AdobeSystemsIncorporated aux Etats-Unis et/ou dans d’autres pays. Microsoft et Windows sont des marques ou des
marques déposées de MicrosoftCorporation aux Etats-Unis et dans d’autres pays. Apple et MacOS sont des marques
d’AppleComputer,Incorporated, déposées aux Etats-Unis et dans d’autres pays. Toutes les autres marques citées sont
la propriété de leurs détenteurs respectifs.
Adobe Systems Incorporated, 345 Park Avenue, SanJose, Californie95110, Etats-Unis. Avertissement à l’attention des
utilisateurs finaux du gouvernement des Etats-Unis. Le logiciel et la documentation sont des articles commerciaux,
(«Commercial Items »), selon la définition de ce terme dans l’article48C.F.R. §2.101, composés d’un logiciel commercial
(«Commercial Computer Software») et d’une documentation commerciale relative au logiciel («Commercial Computer
Software Documentation»), selon la définition de ces termes dans l’article48C.F.R. §12.212 ou 48C.F.R. §227.7202, selon
le cas. Conformément aux articles 48C.F.R. §12.212 ou 48C.F.R. §§227.7202-1 à 227.7202-4, selon le cas, le logiciel
commercial et la documentation commerciale relative au logiciel sont cédés sous licence aux utilisateurs du
gouvernement des Etats-Unis (a)en tant qu’articles commerciaux uniquement et (b)avec les seuls droits conférés à tout
autre utilisateur final tenu par les termes et conditions stipulésici. Droits non publiés réservés en vertu de la législation
américaine sur les droits d’auteurs. Adobe Systems Incorporated, 345 Park Avenue, SanJose, CA95110-2704, Etats-Unis.
Pour les utilisateurs finaux du gouvernement des Etats-Unis, Adobe s’engage à respecter toutes les lois sur l’égalité des
chances, y compris, le cas échéant, les dispositions du décret-loi (Executive Order)11246, tel qu’amendé, la section402
de l’Acte d’assistance à la réhabilitation des vétérans du Vietnam (the Vietnam Era Veterans Readjustment Assistance Act)
de1974 (38USC4212) et la section503 de l’Acte de réhabilitation (RehabilitationAct) de1973, tel qu’amendé, ainsi que
les règlements de l’article41C.F.R., sections60-1 à 60-60, 60-250 et60-741. Les règlements et la clause d’action
affirmative contenus dans la phrase précédente doivent être inclus comme référence.
Les scripts représentent la fonction la plus puissante d’Adobe®InDesign®. Aucune autre fonction n’est aussi
rapide, facile et économique que le script.
Le présent document s’adresse à tous les utilisateursd’InDesign. Si vous n’avez jamais créé un script, ce
document vous aidera à commencer. Si vous avez déjà créé des scripts pour d’autres applications, vous
apprendrez à appliquer vos connaissances aux scriptsInDesign.
Ce document traite également de l’installation et de l’exécution d’un scriptInDesign, ainsi que des atouts
et des limitations des scriptsInDesign. Vous trouverez des indications sur les logiciels dont vous avez
besoin pour commencer à écrire vos propres scripts.
Une fois que vous aurez acquis les connaissances de base sur les scripts d’InDesign à l'aide de ce didacticiel,
vous pourrez consulter le
Le
Guide des scripts d’Adobe InDesign
tels que la mise en forme du texte, la recherche ou la modification de texte, l’association de scripts et
d’éléments de menu, la création d’objets sur une page et l’exportation de documents.
Prise en main
Guide des scripts d’Adobe InDesign
contient des centaines de scripts pédagogiques portant sur des sujets
, qui explore les scripts de manière plus détaillée.
A l’aide des scripts, vous pouvez reproduire la plupart des opérations que vous exécutez par le biais de
l’interface utilisateur. Vous pouvez dessiner des cadres, entrer du texte et le mettre en forme, importer des
images et imprimer ou exporter les pages du document. Toute opération apportant une modification au
document ou à son contenu peut être réalisée à l’aide d’un script. Les scripts vous permettent même
d’exécuter certaines opérations qui ne sont pas réalisables avec l’interface utilisateur.
Les scripts permettent de créer des menus, d’ajouter des éléments de menu, de créer et d’afficher des boîtes
de dialogue et des panneaux, mais également de répondre aux sélections de l’interface utilisateur. Ils peuvent
lire et écrire des fichiers texte, analyser des donnéesXML et communiquer avec d’autres applications.
Les scripts permettent d’effectuer toutes sortes de tâches, des plus simples (telles que la définition d’un
taquet de tabulation à l’emplacement du pointeur de texte) aux plus complexes, comme la définition d’un
ensemble complet de fonctions (on doit la fonction d’exportationXHTML d’InDesign à un script). Vous
pouvez commencer avec des scripts simples qui n’exécutent qu’une action, puis passer aux scripts qui
automatisent le processus de publication toutentier.
Les tâches que vous ne pouvez pas exécuter à l’aide de scripts, telles que la définition d’un espace de
travail ou d’un ensemble de raccourcis clavier, sont des tâches associées à l’interface utilisateur. En outre,
les scripts ne permettent pas d’ajouter de nouveaux types d’objets à un documentInDesign ou d’ajouter
une nouvelle fonctionnalité de base au programme, telle qu’un moteur de composition de texte. Pour ce
type d’extension, vous devez utiliser le kitSDK (Software Developer’s Kit) d’InDesign, qui vous indique
comment écrire des modules externes compilés à l’aide du langageC++.
Les scripts sont souvent associés dans les esprits à des tâches longues et répétitives, telles que la mise en
page d’un annuaire téléphonique. Notez, toutefois, qu’ils permettent également d’exécuter d’autres
tâches, telles que les suivantes:
XAutomatisation d’une myriade de petites tâches fastidieuses quotidiennes
XPersonnalisation d’InDesign pour l’adaptation aux habitudes de travail et mises en page de l’utilisateur
XRéalisation d’effets artistiques, difficiles voire impossibles à obtenir par d’autres moyens
5
Didacticiel de scripts AdobeInDesignCS6Prise en main 6
Installation des scripts
L’installation d’un scriptInDesign est simple à réaliser: enregistrez le fichier de script dans le dossier
ScriptsPanel du dossierScripts, dans votre dossierInDesign. (Si le dossierScripts n’existe pas, créez-le.)
Vous pouvez également placer le script dans le dossier ScriptsPanel de votre dossier de préférences,
à l’emplacement suivant:
Windows® XP:
Windows® Vista:
Mac OS®:/Users/<username>/Library/Preferences
où <username> correspond à votre nom d’utilisateur et <locale> désigne votre région et votre langue,
par exemple, en_US.
Une fois dans le dossier, le script s’affiche dans le panneauScripts de l’applicationInDesign. Pour afficher le
panneau, choisissez la commande Fenêtre> Utilitaires>Scripts.
Vous pouvez également placer des alias ou des raccourcis de scripts (ou de dossiers contenant des scripts)
dans le dossier ScriptsPanel. Ils s’afficheront dans le panneauScripts.
Pour exécuter un script particulier au démarrage d’InDesign, placez ce dernier dans un dossier nommé
«StartupScripts», sous le dossierScripts (si le dossierScripts n’existe pas, créez-le.)
C:\Documents and Settings\<username>\Application Data
\Adobe\InDesign\Version 8.0\<locale>\Scripts
Pour exécuter un script, vous devez afficher le panneauScripts (choisissez la commande Fenêtre>
Utilitaires>Scripts), puis cliquer deux fois sur le nom du script dans le panneauScripts. De nombreux
scripts affichent des éléments d’interface utilisateur (boîtes de dialogue ou panneaux, parexemple), ainsi
que des messages d’alerte, si nécessaire.
Utilisation du panneauScripts
Le panneauScripts d’InDesign représente le meilleur moyen d’exécuter la plupart des scriptsInDesign. Si ce
panneau n’est pas visible, vous pouvez l’afficher en choisissant la commande Fenêtre> Utilitaires>Scripts.
Les scripts activés à partir du panneauScripts sont exécutés plus rapidement que ceux activés à partir du
Finder (MacOS®) ou de l’Explorateur(Windows®).
Pour accélérer l’exécution des scripts, vous pouvez également désactiver la réactualisation de l’écran lors
de l’exécution des scripts. Pour cela, désactivez l’option Activer la réactualisation dans le menu du
panneauScripts. Pour afficher les opérations du script à mesure qu’elles s’exécutent, activez cette option.
Le panneauScripts peut exécuter des AppleScripts (fichiers avec l’extension
compilés ou non, des JavaScripts (fichiers avec l’extension
l’extension
Pour modifier un script affiché dans le panneauScripts, sélectionnez-le, puis choisissez la commande
Modifier le script dans le menu du panneauScripts. Vous pouvez également maintenir la toucheOption
(MacOS) ouAlt (Windows) enfoncée et cliquer deuxfois sur le nom du script. Le script s’ouvre dans
l’éditeur défini pour son type de fichier.
.vbs) ou des programmes exécutables à partir du panneauScripts.
.spt, .asou .applescript)
.js ou.jsx), des VBScripts (fichiers avec
Didacticiel de scripts AdobeInDesignCS6Prise en main 7
Pour ouvrir le dossier contenant un script affiché dans le panneauScripts, sélectionnez le script, puis
choisissez la commande Faireapparaître dans le Finder (MacOS) ou Faireapparaître dans l’Explorateur
(Windows). Vous pouvez également maintenir la toucheCommande (MacOS) ou les touchesCtrl+Maj
(Windows) enfoncées et cliquer deuxfois sur le nom du script. Le dossier contenant le script s’ouvre dans
le Finder (MacOS) ou l’Explorateur (Windows).
En règle générale, les scripts s’exécutent sous la forme d’une série d’opérations (actions), ce qui signifie
que vous pouvez annuler les modifications apportées au document par le script en choisissant la
commandeAnnuler dans le menuEdition. Vous pouvez ainsi dépanner un script, en revenant aux étapes
précédentes pour chaque modification. Les scripts peuvent modifier le mode annulation et enregistrer
toutes les opérations de script en une seule étape d’annulation. Ceci permet d’accélérer considérablement
l’exécution des scripts. Pour plus de détails sur cette opération, consultez le Guide des scripts d’Adobe InDesign correspondant au langage de script de votre choix.
Pour ajouter un raccourci clavier à un script, choisissez la commande Edition> Raccourcisclavier,
sélectionnez un ensemble de raccourcis modifiable dans le menuEnsemble, puis sélectionnez
l’optionScripts dans le menuZone duproduit. Une liste de scripts apparaît dans le panneauScripts.
Sélectionnez un script, puis affectez-lui un raccourci clavier comme vous le feriez pour n’importe quelle
autre fonction d’InDesign.
A propos des langages de script
Le langage utilisé pour rédiger des scripts dépend du système de script de votre plate-forme de travail:
AppleScript pourMacintosh, VBScript pourWindows ou JavaScript pour les deux plates-formes. Bien que
les langages d’écriture de script diffèrent, leur fonctionnement avecInDesign est très similaire.
Les exemples de scripts contenus dans ce document 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 le langage JavaScript pour la création de scripts multiplate-formes sous MacOS
etWindows. La prise en charge de JavaScript par InDesign repose sur l’implémentation de JavaScript
pourAdobe appelée ExtendScript. L’interpréteur ExtendScript est conforme à la norme ECMA262 en
vigueur pourJavaScript. Toutes les fonctions de langage JavaScript1.5 sont prises en charge. Adobe
Illustrator®, Adobe Photoshop®, ainsi que d’autres produits AdobeCreativeSuite® utilisent également
l’interpréteur ExtendScriptJavaScript.
Même si vous pouvez écrire des scripts dans d’autres versions de JavaScript, telles que Microsoft®JScript
(Windows) ou JavaScriptOSA de LateNight Software (MacOS), les termes utilisés dans ces langages ne
sont pas les mêmes que ceux utilisés dansExtendScript. Les exemplesExtendScript ne fonctionnent pas
dans d’autres versionsJavaScript.
REMARQUE : les outils et fonctionsExtendScript sont utilisés dans plusieurs produitsAdobe. Cela a mené à
la consolidation de toute la documentationExtendScript. Pour en savoir plus sur les outils JavaScript tels
que le module d’interface utilisateur ScriptUI et ExtendScript Toolkit (environnement de développement
JavaScript et inspecteur de modèles d’objet), reportez-vous au Guide des outils JavaScript.
Didacticiel de scripts AdobeInDesignCS6Prise en main 8
Windows
Pour utiliser les scripts d’InDesign sous Windows, vous pouvez utiliser soit JavaScript, soit une version de
Microsoft VisualBasic, telle queVBScript.
Les scripts d’apprentissage VisualBasic sont écrits en langageVBScript. Nous avons choisi le langageVBScript,
car vous n’avez besoin d’aucun logiciel supplémentaire pour exécuter ou modifier des fichiers VBScript;vous
pouvez les modifier avec n’importe quel éditeur de texte et les exécuter à l’aide du panneauScripts d’InDesign.
Les autres versions de VisualBasic incluent VisualBasic5 Control Creation Edition(CCE), VisualBasic6,
VisualBasic.NET et VisualBasic2005 ExpressEdition. Les versions de VisualBasic antérieures à
VisualBasic.NET fonctionnent bien avec les scriptsInDesign. La version VisualBasic.NET et les versions
plus récentes ne fonctionnent pas aussibien, car elles n’utilisent pas le type de données
largement présent dans les scriptsInDesign.
De nombreuses applications, parexemple MicrosoftWord, MicrosoftExcel, MicrosoftVisio ou AutoCAD
contiennent VisualBasic for Applications(VBA). Bien qu’il ne soit pas intégré au programmeInDesign,
vous pouvez utiliserVBA pour créer des scriptsInDesign.
Pour utiliser VBScript ou VisualBasic dans les scriptsInDesign 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 au panneauScripts d’InDesign.
Variant qui est
MacOS
Pour utiliser les scriptsInDesign sous MacOS, vous pouvez utiliser soit JavaScript, soitAppleScript. Pour écrire
des AppleScripts, vous devez posséder AppleScript version1.6 ou supérieure, ainsi qu’un éditeur de
scriptsAppleScript. AppleScript, fourni avec tous les systèmesApple®, peut être téléchargé gratuitement à partir
du siteWebd’Apple. L’éditeur de scripts d’Apple est fourni avec MacOS; il est accessible à partir des menus:
Des éditeurs de script tiers, tels que Script Debugger (de Late Night Software, http://www.latenightsw.com),
sont également disponibles.
Langage de script à utiliser
Si vous avez déjà écrit des scripts, utilisez le langage que vous connaissez. Si vous n’avez jamais écrit de
scripts ou si vous devez utiliser vos scripts sur les versions MacOS et Windows d’InDesign, utilisez le
langageJavaScript. Si vous devez communiquer avec des applications autres que des applicationsAdobe
sur votre système, utilisez le langage approprié standard de la plate-forme (AppleScript pour MacOS ou
VBScript pourWindows).
Nous ne pouvons pas vous fournir une documentation détaillée sur AppleScript, JavaScript ouVBScript.
Vous aurez donc peut-être besoin de vous procurer la documentation spécifique à un ou plusieurs de ces
langages de script.
REMARQUE : vous pouvez également utiliser la plupart des langages de programmation (parexemple,
Python ouC#) qui peuvent se connecter au système d’automatisation standard de la plate-forme; cela ne
fait toutefois pas partie du contenu du présent document.
Didacticiel de scripts AdobeInDesignCS6Prise en main 9
Utilisation des scripts de ce document
Pour afficher ou modifier les scripts de ce document, ouvrez le fichier de script d’apprentissage correspondant
(le nom de fichier figure devant chaque script) dans l’application d’édition de scripts de votre choix.
Pour exécuter un script, installez-le dans le dossier ScriptsPanel (voir la section « Installation des scripts » à
la page 6), puis procédez comme suit:
1.Choisissez la commande Fenêtre> Utilitaires>Scripts pour afficher le panneauScripts.
2.Pour exécuter le script, cliquez deux fois sur son nom dans le panneauScripts.
Pour enregistrer un script que vous avez modifié, enregistrez-le au format de fichier texte brut dans le
dossier ScriptsPanel (voir la section «
AppleScript:.applescript
JavaScript:.jsx
VBScript :.vbs
REMARQUE : si vous entrez manuellement les exemplesJavaScript présentés dans ce document, veillez à
respecter la casse indiquée. JavaScript est sensible à la casse, et les scripts ne fonctionneront pas s’ils ne
respectent pas la casse indiquée. Les exemples AppleScript et VBScript ne sont pas sensibles à la casse.
Il est toutefois conseillé d’utiliser les fichiers de script fournis avec ce didacticiel.
Installation des scripts » à la page 6) avec l’extension appropriée:
REMARQUE : si vous copiez et collez des scripts de ce document, soyez conscient que les sauts de ligne
provenant de la mise en page du document peuvent entraîner des erreurs dans vos scripts. Ces erreurs
pouvant être difficiles à repérer, il est recommandé d’utiliser les scripts fournis avec ce didacticiel.
Votre premier script InDesign
Vous allez maintenant créer un scriptInDesign pour générer un document, ajouter un bloc de texte et
entrer du texte dans ce bloc. Ce script vous permet d’effectuer les opérations suivantes:
XEtablissement de la communication avecInDesign
XCréation d’un document
XCréation d’un bloc de texte sur une page spécifique
XAjout de texte à un bloc de texte
AppleScript
Lancez l’application de l’éditeur de scripts (situé dans le dossier Applications du dossierAppleScript).
Entrez le script suivant (ou ouvrez le script d’apprentissage
tell application "Adobe InDesign CS6"
set myDocument to make document
tell page 1 of myDocument
set myTextFrame to make text frame
set geometric bounds of myTextFrame to {"6p", "6p", "24p", "24p"}
set contents of myTextFrame to "Hello World!"
end tell
end tell
HelloWorld.applescript):
Didacticiel de scripts AdobeInDesignCS6Prise en main 10
Enregistrez le script au format de fichier texte avec l’extension.applescript dans le dossier ScriptsPanel
(voir la section «
Installation des scripts » à la page 6). Pour exécuter le script, cliquez deux fois sur son nom
dans le panneauScripts ou cliquez sur Exécuter dans la fenêtre de l’éditeur de scripts.
JavaScript
Lancez l’utilitaire ExtendScript Toolkit (ou un éditeur de texte). Entrez le script suivant (ou ouvrez le script
d’apprentissage
var myDocument = app.documents.add();
var myTextFrame = myDocument.pages.item(0).textFrames.add();
myTextFrame.geometricBounds = ["6p", "6p", "24p", "24p"];
myTextFrame.contents = "Hello World!";
HelloWorld.jsx):
Enregistrez le script au format de fichier texte brut avec l’extension.jsx dans le dossier ScriptsPanel (voir
la section «
Installation des scripts » à la page 6). Pour exécuter le script, cliquez deux fois sur son nom dans
le panneauScripts ou sélectionnez la commandeInDesign dans le menu déroulant cible de l’application
dans l’utilitaire ExtendScript Toolkit, puis cliquez sur le boutonExécuter.
VBScript
Lancez un éditeur de texte (parexemple, Bloc-notes), puis entrez le script suivant (ou ouvrez le script
d’apprentissage
Set myInDesign = CreateObject("InDesign.Application")
Set myDocument = myInDesign.Documents.Add
Set myTextFrame = myDocument.Pages.Item(1).TextFrames.Add
myTextFrame.GeometricBounds = Array("6p", "6p", "24p", "24p")
myTextFrame.Contents = "Hello World!"
HelloWorld.vbs):
Enregistrez le script au format de fichier texte avec l’extension.vbs dans le dossier ScriptsPanel (voir la
section «
Installation des scripts » à la page 6). Pour exécuter le script, cliquez deux fois sur le nom du script
dans le panneauScripts d’InDesign.
Analyse du script
Voici une analyse étape par étape des opérations réalisées par le script Hello World (dans chaque langage
de script):
1.Etablissement de la communication avec l’objet d’applicationInDesign
4.Définition des délimitations géométriques (emplacement des bords supérieur, gauche, inférieur et
droit) du bloc de texte. Dans cette étape, le script utilise des remplacements d’unités de mesures
(ppour les picas) pour garantir la taille exacte du bloc de texte, sans tenir compte des unités de
mesure pardéfaut. Les emplacements sont présentés dans une liste ou un tableau de valeurs; chaque
langage de script crée les tableaux de données d’une manière légèrement différente. Pour plus de
détails sur les variables de tableau de données, voir la section
page 15.
AppleScript:set geometric bounds of myTextFrame to {"6p", "6p", "24p", "24p"}
Cette section traite de la terminologie des langages de script en général, et plus particulièrement de la
création de scriptsInDesign.
Terminologie des scripts
Cette section traite des termes et concepts utilisés couramment dans la création de scripts.
Commentaires
Les commentaires permettent d’ajouter un descriptif à 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). Dans ce document, nous utilisons des
commentaires pour les scripts d’apprentissage.
Pour inclure un commentaire:
XEn AppleScript, insérez-- à gauche du commentaire ou placez le commentaire entre(* et*).
exemple:
Par
--this is a comment
(* and so is this *)
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 12
XEnJavaScript, insérez// à gauche du commentaire ou placez le commentaire entre/* et*/.
exemple:
Par
// this is a comment
/* and so is this */
XEnVBScript, tapezRem (pour «remarque») ou' (guillemet droit simple) à gauche du commentaire.
Saisissez le marqueur de commentaire au début d’une ligne pour mettre toute cette ligne en
commentaire. Par exemple:
Rem this is a comment
' and so is this
Valeurs
Le corps d’un caractère, la position d’un bloc de texte sur une page et la couleur de contour d’un rectangle
sont autant d’exemples devaleurs utilisées pour la création de scriptsInDesign. 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,
parexemple, 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 ci-après
répertorie et décrit les types de valeurs les plus couramment utilisées pour la création de scriptsInDesign.
Type de valeurNatureExemple
BooleanTrue ou False logique
IntegerNombres entiers (sans virgule).
True
14
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
également utiliser
indifféremment des
données de type long ou
fixe pour les nombres entiers
et les nombres réels.
Double (VBScript),
fixed or real
Nombre très précis pouvant être
décimal.
13.9972
(AppleScript),
number (JavaScript)
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 13
Type de valeurNatureExemple
AppleScript
StringSérie de caractères de texte.
"I am a string"
Les chaînes de texte sont
présentées entre guillemets
anglais.
Array (VBScript,
JavaScript)
Liste de valeurs (ces valeurs
pouvant être de tout type).
AppleScript:
{"0p0", "0p0", "16p4", "20p6"}
or list (AppleScript)
VBScript:
Array("0p0", "0p0", "16p4", "20p6")
JavaScript:
["0p0", "0p0", "16p4", "20p6"]
Conversion de valeurs d’un type à un autre
Tous les langages de script pris en charge parInDesign permettent de convertir des valeurs variables d’un
type à un autre. Parmi les conversions les plus communes, figure la conversion de nombres en chaînes de
texte (ce qui permet d’entrer des nombres en toutes lettres ou de les afficher dans des boîtes de dialogue)
ou de chaînes de texte en nombres (ce qui permet de définir un corps ou une position de page).
Reportez-vous aux exemples suivants.
--To convert from a number to a string:
set myNumber to 2
set myString to (myNumber as string)
--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"
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;
VBScriptRem 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)
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 14
Variables
Une variable est le conteneur d’une valeur. Les variables portent ce nom car les valeurs qu’elles
contiennent peuvent changer. Une variable peut contenir un nombre, une chaîne de texte ou une
référence à un objetInDesign. Les variables portent un nom. Vous ferez donc référence à une variable
par son nom. Pour placer une valeur dans une variable, vous devez l’assigner à cette variable.
Dans le premier exemple de script, plus haut, les variables
éviter d’indiquer la spécification entière de l’objet (parexemple,
app.documents.item(0).pages.item(0).textFrames.item(0)), à chaque référence à l’objet.
myDocument etmyTextFrame sont utilisées pour
textframe1 of page1 of document1 ou
Dans tous les exemples de scripts et les scripts d’apprentissage accompagnantInDesign, les variables
commencent par
my. Vous pouvez ainsi différencier facilement les variables créées dans un script des
termes du langage de script.
Affectation d’une valeur à une variable
L’affectation de valeurs ou de chaînes de texte à des variables est très simple, comme l’indique le tableau
suivant:
LangageExemples d’affectation d’une valeur à une variable
AppleScript
JavaScript
set myNumber to 10
set myString to "Hello, World!"
set myTextFrame to make text frame at page 1 of myDocument
var myNumber = 10;
var myString = "Hello, World!";
var myTextFrame = myDocument.pages.item(0).textFrames.add();
VBScript
myNumber = 10
myString = "Hello, World!"
Set myTextFrame = myDocument.Pages.Item(1).TextFrames.Add
REMARQUE : en JavaScript, toute variable non précédée devar est considérée par défaut comme globale,
c’est-à-dire non liée à une fonction spécifique.
varn’est pas obligatoire, mais il est recommandé de
l’utiliser dans les scripts comprenant plusieurs fonctions. Dans les scripts AppleScript et VBScript, les
variables sont locales à moins d’être spécifiquement définies comme globales. Cela signifie que les
variables ne persistent pas en dehors de la fonction pour laquelle elles ont été créées.
Utilisez des noms descriptifs pour vos variables, tels que
c. Cela rend votre script plus facile à lire. Les noms plus longs n’affectent pas la vitesse d’exécution du
ou
PremièrePage ou LogoEntreprise, plutôt que x
script.
Les noms de variables doivent être composés d’un seul mot, mais vous pouvez utiliser les majuscules
(pour écrire
myFirstPage, parexemple) ou les traits de soulignement (my_first_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 anglais.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 15
Variables de tableau de données
Les scripts AppleScript, JavaScript et VBScript prennent en charge les tableaux de données, variables qui
désignent une liste de valeurs. Dans AppleScript, un tableau de données est appelé liste. Le tableau
suivant présente des exemples de définition de tableaux de données:
LangageExemples de définition de tableaux de données
AppleScript
JavaScript
VBScript
Visual Basic.NET
set myArray to {1, 2, 3, 4}
myArray = [1, 2, 3, 4];
myArray = Array(1, 2, 3, 4)
myArray = New Double (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. EnVBScript et enJavaScript, le premier élément d’un tableau de données est le numéro0;
en AppleScript, il s’agit du numéro1. Des exemples de référence aux éléments d’un tableau de données
sont fournis dans le tableau suivant:
LangageExemples de référence au premier élément d’un tableau de données
AppleScript
JavaScript
VBScript
set myFirstArrayItem to item 1 of myArray
var myFirstArrayItem = myArray[0];
myFirstArrayItem = myArray(0)
REMARQUE : vous pouvez utiliser l’instruction VisualBasic OptionBase pour modifier le premier élément
d’un tableau de données et en faire l’élément1 au lieu de l’élément0. Dans les exemples présentés dans ce
document, le premier élément d’un tableau de données est l'élément0, et non l'élément1; c’est ce qui est
défini par défaut. Si vous avez choisi1 pour
OptionBase, vous devrez ajuster toutes les références des
tableaux de données en conséquence dans les exemples de scripts.
Un tableau de données peut en contenir un autre, comme dans les exemples ci-dessous.
LangageExemples d’inclusion de tableaux de données dans un tableau de données
AppleScript
JavaScript
VBScript
Visual Basic.NET
set myArray to {{0, 0}, {72, 72}}
var myArray = [[0,0], [72,72]];
myArray = Array(Array(0,0), Array(72, 72))
myArray = New Array(New Double(0,0), NewDouble (0,0))
Détermination du type de valeur d’une variable
Parfois, un script doit 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, parexemple, 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.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 16
AppleScript
-- Given a variable of unknown type, "myMysteryVariable"...
set myType to class of myMysteryVariable
--myType will be an AppleScript type (e.g., rectangle)
JavaScript//Given a variable of unknown type, "myMysteryVariable"...
myType = myMysteryVariable.constructor.name;
//myType will be a string corresponding to the JavaScript type (e.g., "Rectangle")
VBScriptRem Given a variable of unknown type, "myMysteryVariable"...
myType = TypeName(myMysteryVariable)
Rem myType will be a string corresponding to the variable type (e.g., "Rectangle")
Opérateurs arithmétiques
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 variablemyWidth.
Vous pouvez également utiliser des opérateurs pour effectuer des comparaisons (est égalà(
différentde(
MyWidth > myHeight
<>), est supérieurà(>) ou est inférieurà(<)). Par exemple:
=), est
Renvoie la valeurtrue (ou1) si myWidth est supérieur àmyHeight ou false(0) si ce n’est pas le cas.
Opérateurs de chaînes de caractères
Tous les langages de script fournissent des opérateurs «utilitaires» supplémentaires. En AppleScript
etVBScript, l’opérateur
"Pride " & "and Prejudice"
& permet de concaténer (joindre) deux chaînes de texte:
Renvoie la chaîne de texte suivante:
"Pride and Prejudice"
Pour joindre deux chaînes de texte enJavaScript, utilisez le signe plus(+), comme suit:
"Pride " + "and Prejudice"
//returns the string: "Pride and Prejudice"
Instructions conditionnelles
Les instructions conditionnelles permettent une prise de décision basée sur une évaluation. Par exemple,
l’expression «Si l’objet sélectionné est un rectangle, définir l’épaisseur du contour sur 12points» est une
instruction conditionnelle. 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 publication ou la date) et d’agir en
fonction du résultat. Les instructions conditionnelles commencent presque toujours par
if.
REMARQUE : les instructions conditionnelles effectuent souvent des comparaisons logiques. Dans les
scripts AppleScript et VBScript, utilisez le signe égal (
=) pour comparer des objets. Dans les scripts
JavaScript, le signe égal permet d’attribuer une valeur à une variable; pour comparer des objets, utilisez
un double signe égal (
==).
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 17
Structures de contrôle
Si vous pouviez parler àInDesign, vous pourriez lui dire notamment «Répète vingt fois la procédure
suivante.». En terminologie des scripts, cette instruction est appelée structuredecontrô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 les instances (ouitérations) de la boucle, jusqu’à ce qu’une condition spécifique
soit remplie. Les structures de contrôle commencent en général par
(en JavaScript etVBScript).
repeat (enAppleScript) ou parfor
Fonctions et gestionnaires
Les fonctions (enVBScript ou JavaScript) ou les gestionnaires (enAppleScript) sont des modules auxquels
vous pouvez faire référence dans un script. Généralement, vous envoyez une valeur ou une série de
valeurs à une fonction (ou à un gestionnaire) et obtenez une ou plusieurs autres valeurs. Le code des
fonctions et des gestionnaires permet tout simplement d’éviter de saisir les mêmes lignes de code de
façon répétée dans un script.
EnAppleScript, les gestionnaires commencent par
commencent par
function.
on. EnJavaScript et enVBScript, les fonctions
Présentation du modèle d’objet InDesign
Lorsque vous pensez àInDesign et aux documentsInDesign, vous organisez certainement le programme
et ses composants dans votre esprit. Vous savez que les paragraphes sont contenus dans des blocs de
texte qui apparaissent sur une page, qu’une page fait partie d’une planche, et que plusieurs planches
composent un document. Les documents contiennent des couleurs, des styles, des calques et des
planchestypes. A mesure que vous créez les mises en page, vous pensez intuitivement à leur ordre.
InDesign «appréhende» le contenu d’un document de la même manière. Un document contient des
pages, qui à leur tour contiennent des éléments de page (blocs de texte, rectangles, ellipses, et ainsi de
suite). Les blocs de texte contiennent des caractères, des mots, des paragraphes et des blocs ancrés; les
blocs graphiques contiennent des images, des fichiersEPS ou des fichiersPDF; les groupes contiennent
d’autres éléments de page. Tous ces éléments sont les objets qui composent une publicationInDesign et
qui sont utilisés pour rédiger les scriptsInDesign.
Les objets de votre publication sont organisés dans un ordre spécifique: les blocs figurent sur les pages,
lesquelles figurent dans le document, qui à son tour figure dans l’objet d’applicationInDesign. Les termes
modèle d’objet et hiérarchie font référence à cette structure. Il est important de comprendre la définition du
modèle d’objet pour bien identifier l’objet que vous voulez utiliser, et votre meilleur guide pour créer des
scripts dansInDesign est votre connaissance de l’applicationelle-même.
Les objets possèdent des propriétés (attributs). Par exemple, les propriétés d’un objet texte incluent la
police utilisée pour la mise en forme du texte, le corps et l’interligne appliqués au texte.
Les propriétés possèdent des valeurs. Ainsi, le corps des caractères du texte peut être exprimé par un
nombre (enpoints) ou par la chaîne «Auto» pour l’interligne automatique. La propriété de couleur de
fond du texte peutêtre définie sur une couleur, un dégradé, une encremélangée ou une nuance.
Les propriétés peuvent être en lecture/écriture ou en lectureseule. Vous pouvez définir les propriétés en
lecture/écriture sur d’autres valeurs, mais pas les propriétés en lectureseule.
Les objets possèdent également des méthodes (les verbes de création de scripts ou les opérations qu’un
objet peut exécuter). Par exemple, l’objet de document contient des méthodes d’impression,
d’exportation et d’enregistrement.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 18
documents
libraries
application defaults
application
books
application preferences
application events
application menus
application methods
application properties
a document
document defaults
document preferences
document events
document methods
document properties
pages or spreads
page
page itemsstories
text objects
document elements
Les méthodes possèdent des paramètres ou des valeurs définissant l’effet de la méthode. Par exemple,
la méthode d’importation (ou de placement) d’un document contient un paramètre définissant le fichier
à importer. Les paramètres sont obligatoires ou facultatifs, selon la méthode.
L’illustration suivante est une vue d’ensemble du modèle d’objetInDesign. Ce diagramme ne représente
pas la liste complète des objets disponibles dans les scriptsInDesign. Il s’agit simplement d’une structure
conceptuelle permettant de comprendre la relation entre les types d’objets.
Les objets figurant dans le diagramme sont expliqués dans le tableau suivant:
Te rm eSignification
ApplicationInDesign.
Application
defaults
Les paramètres par défaut de l’application, tels que les couleurs, les styles de
paragraphe et les styles d’objet. Les valeurs par défaut de l’application concernent
tous les nouveaux documents.
Application
events
Les événements qui se produisent à mesure qu’un utilisateur travaille dans
l’application ou qu’un script s’exécute. Les événements sont générés par l’ouverture,
la fermeture ou l’enregistrement d’un document ou par la sélection d’une
Application
menus
Application
methods
commande de menu. Les événements peuvent déclencher des scripts.
Les menus, sous-menus et menus contextuels qui s’affichent dans l’interface utilisateur
d’InDesign. Vous pouvez attacher des scripts aux menus pour exécuter des commandes.
Les opérations que l’application peut effectuer, notamment rechercher et remplacer
du texte, copier la sélection, créer des documents ou ouvrir des bibliothèques.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 19
Te rm eS ig n if i ca ti o n
Application
preferences
Par exemple, des préférences de texte, des préférences d’exportationPDF ou des
préférences de document. De nombreux objets de préférences sont également
disponibles au niveau du document. Tout comme dans l’interface utilisateur, les
préférences d’application s’appliquent aux nouveaux documents. Les préférences
de document modifient les paramètres d’un document spécifique.
Application
properties
Les propriétés de l’application, notamment le chemin complet de l’application,
ses paramètres régionaux et le nom d’utilisateur.
BooksUne collection de livres ouverts.
DocumentUn document InDesign.
Document
defaults
Document
elements
Les paramètres par défaut du document, tels que les couleurs, les styles de
paragraphe et les paramètres par défaut de mise en forme de texte.
Parexemple, les articles, les graphiques importés et les pages d’un document.
L’illustration précédant ce tableau indique des pages et des articles, car ces objets
sont d’importants conteneurs d’autres objets. Toutefois, les éléments de document
incluent également des rectangles, des ovales (ellipses), des groupes, des
élémentsXML, ainsi que tout autre type d’objet que vous pouvez importer ou créer.
Document eventsLes événements qui se produisent au niveau du document, parexemple,
l’importation de texte (voir «Applicationevents» plus haut dans le tableau).
Document
methods
Les opérations que le document peut effectuer, notamment fermer, imprimer ou
exporter un document.
Document
preferences
Document
properties
Les préférences d’un document, telles que les préférences de repères, d’affichage
ou de document.
Par exemple, le nom de fichier du document, le nombre de pages ou l’emplacement
de l’origine (pointzéro).
DocumentsUne collection de documents ouverts.
LibrariesUne collection de bibliothèques ouvertes.
PageUne seule page dans un documentInDesign.
Page itemsTout objet que vous pouvez créer ou placer sur une page. Il existe de nombreux
types d’éléments de page, tels que des blocs de texte, des rectangles, des lignes
graphiques ou des groupes.
Pages or spreadsLes pages ou les planches dans un documentInDesign.
StoriesLe texte dans un documentInDesign.
Text objectsLes caractères, mots, lignes, paragraphes et colonnes de texte sont des exemples
d’objets texte dans un articleInDesign.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 20
Consultation du modèle d’objet InDesign
Vous pouvez consulter le modèle d’objetInDesign depuis votre application d’édition de scripts. Toutes les
informations de référence sur les objets et leurs propriétés et méthodes sont stockées dans le modèle et
peuvent être affichées.
AppleScript
Pour afficher le dictionnaire AppleScript d’InDesign:
1.Lancez InDesign.
2.Lancez l’éditeur de scripts Apple.
3.Dans l’éditeur de scripts, choisissez la commande Fichier> Ouvrir un dictionnaire. L’éditeur de scripts
affiche une liste des applications prenant en charge les scripts.
4.Sélectionnez votre copie d’InDesign, puis cliquez sur Sélectionner. L’éditeur de scripts affiche une liste
des suites (collections d’objets associés) d’InDesign.
5.Sélectionnez une suite pour afficher les objets et méthodes (commandes) qu’elle contient.
Sélectionnez un objet pour afficher ses propriétés.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 21
JavaScript
Pour afficher le modèle d’objet InDesign dans l’utilitaire ExtendScript Toolkit:
1.Lancez l’utilitaire ExtendScript Toolkit.
2.Choisissez la commandeAide> Outil de visualisation d’Object Model.
3.Sélectionnez Adobe InDesignCS6 Object Model dans le panneauNavigateur. L’utilitaire ExtendScript
Toolkit charge le fichier d’aide associé au modèle d’objet et affiche une liste d’objets de script InDesign
dans le panneauClasses.
4.Dans la liste d’objets du panneauClasses, sélectionnez l’objet à afficher, puis cliquez sur la propriété ou
la méthode à détailler dans la liste Propriétés et méthodes. L’utilitaire ExtendScript Toolkit affiche
d’autres informations sur la propriété ou la méthode sélectionnée.
Pour plus de détails sur l’outil de visualisation de modèle d’objet de l’utilitaire ExtendScript Toolkit, voir le
Guide des outilsJavaScript.
REMARQUE : le nom de classe (objet) indiqué dans l’outil de visualisation de modèle d’objet utilise une casse
différente de celle appliquée aux instances de ce même objet dans un script. JavaScript étant sensible à la
casse, vous devez saisir le terme avec la casse appropriée dans un script. Par exemple, le terme «Documents»
apparaît dans la liste des classes, mais vous devez utiliser «app.documents» pour faire référence à cette
classe dans un script. La casse adaptée apparaît toujours dans le panneauPropriétés et méthodes de l’outil
de visualisation de modèle d’objet lorsque le parent de l’objet est sélectionné dans le panneauClasses.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 22
VBScript
Pour afficher le modèle d’objetInDesign, vous devez disposer d’un éditeur/débogueurVBScript ou d’une
version de VisualBasic, ou encore d’une application incorporant VisualBasic forApplications.
Visual
Basic6
Pour afficher le modèle d’objet à l’aide de Visual Basic6:
1.Créez un projet VisualBasic, puis choisissez la commande Projet>Références. Visual Basic affiche la
boîte de dialogueRéférences.
2.Dans la liste de références disponibles, sélectionnez l’option Adobe InDesignCS6 TypeLibrary, puis
cliquez surOK. Si la bibliothèque n’apparaît pas dans la liste des références disponibles, cliquez sur
Parcourir, puis recherchez et sélectionnez le fichier Resources for Visual Basic.tlb, habituellement situé
dans le répertoire
C:\Documents and Settings\<nom d’utilisateur>\Application
. Si nécessaire, recherchez le
fichier. Après avoir localisé le fichier, cliquez sur le boutonOuvrir pour ajouter la référence à votre
projet.
3.Choisissez la commande Affichage> Explorateur d’objets. VisualBasic affiche la boîte de dialogue
Explorateur d’objets.
4.Choisissez «InDesign» dans la liste de bibliothèques ouvertes du menuProjet/bibliothèque.
VisualBasic affiche les objets composant le modèle d’objetInDesign.
5.Cliquez sur une classe d’objet. VisualBasic affiche les propriétés et les méthodes de l’objet. Pour plus
de détails sur une propriété ou une méthode, sélectionnez-la. VisualBasic affiche sa définition au bas
de la fenêtre Explorateurd’objets.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 23
Visual
Basic.NET
Pour afficher le modèle d’objet à l’aide de VisualBasic.NET:
1.Créez un projet VisualBasic, puis choisissez la commande Projet> Ajouter la référence. VisualBasic
affiche la boîte de dialogue d’ajout de références.
2.Sélectionnez l’ongletCOM.
3.Dans la liste de références disponibles, sélectionnez l’option Adobe InDesignCS6 TypeLibrary, puis
cliquez sur le boutonSélectionner. VisualBasic.NET ajoute la référence à la liste de composants
sélectionnés. Si la bibliothèque n’apparaît pas dans la liste des références disponibles, cliquez sur
Parcourir, puis recherchez et sélectionnez le fichier
habituellement situé dans le répertoire
6.Choisissez l’optioninterop.indesign dans la liste de bibliothèques ouvertes de la fenêtreObjets.
VisualBasic.NET affiche les objets composant le modèle d’objetInDesign.
7.Cliquez sur une classe d’objet. VisualBasic.NET affiche les propriétés et les méthodes de l’objet. Pour
plus de détails sur une propriété ou une méthode, sélectionnez-la. VisualBasic.NET affiche sa
définition au bas de la fenêtre Explorateurd’objets.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 24
Visual
Basic for
Applications
Pour afficher le modèle d’objet à l’aide de VisualBasic forApplications depuis MicrosoftExcel:
1.Lancez Excel.
2.Choisissez la commande Outils> Macro> VisualBasicEditor. Excel affiche la fenêtre de l’éditeur VisualBasic.
3.Choisissez la commande Outils>Références. L’éditeur VisualBasic affiche la boîte de dialogueRéférences.
4.Dans la liste de références disponibles, sélectionnez Adobe InDesignCS6 TypeLibrary, puis cliquez surOK.
VisualBasic ajoute la référence à la liste de composants sélectionnés. Si la bibliothèque n’apparaît pas
dans la liste des références disponibles, cliquez sur Parcourir, puis recherchez et sélectionnez le fichier
Resources for Visual Basic.tlb
Settings\<nom d’utilisateur>\Application Data\Adobe\InDesign\Version
8.0\<langue>\Scripting Support\
, habituellement situé dans le répertoire
~:\Documents and
. Après avoir localisé le fichier, cliquez sur le boutonOuvrir pour
ajouter la référence à votre projet.
5.Choisissez la commande Affichage> Explorateur d’objets. L’éditeur VisualBasic affiche la fenêtre
Explorateurd’objets.
6.Choisissez l’optionInDesign dans le menu déroulantBibliothèques. L’éditeur VisualBasic affiche une
liste des objets de la bibliothèque d’objetsInDesign.
7.Cliquez sur un nom d’objet. L’éditeur VisualBasic affiche les propriétés et les méthodes de l’objet. Pour
plus de détails sur une propriété ou une méthode, sélectionnez-la. L’éditeur VisualBasic affiche sa
définition au bas de la fenêtre Explorateurd’objets.
Didacticiel de scripts AdobeInDesignCS6Scripts et modèle d’objet InDesign 25
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 donc 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
simple pour définir la position des objets sur une page ou une planche. La composante horizontale d’une paire
x
de coordonnées est appelée
panneauTransformation ouContrôle lorsqu’un objet est sélectionné avec l’outilSélection. Comme dans
l’interface utilisateur d’InDesign, les coordonnées sont mesurées par rapport à l’emplacement actuel de
l’origine (pointzéro) de la règle.
Il existe une différence entre les coordonnées utilisées dansInDesign et le système de coordonnées
géométrique traditionnel. Sur l’axe vertical (ouy) d’InDesign, les coordonnées au-dessous de l’origine sont
des nombres positifs, et celles situées au-dessus, des nombres négatifs.
REMARQUE : les coordonnées de l’emplacement d’un point de tracé sont renvoyées parInDesign dans
l’ordrex,y. Lorsque vous définissez l’emplacement d’un point de tracé, InDesign attend les coordonnées
dans le même ordre. InDesign renvoie certaines coordonnées dans un ordre différent, et celles-ci doivent
lui être fournies 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
et sa composante verticale,y. Vous pouvez voir ces coordonnées dans le
y1, x1, y2,x2).
Utilisation des unités de mesure
Pour envoyer des valeurs de mesure à InDesign, vous pouvez utiliser soit des nombres (14.65, parexemple),
soit des chaînes de mesure («1p7.1», parexemple). Si vous envoyez des nombres, InDesign utilise les unités
de mesure actives de la composition. Si vous envoyez des chaînes de mesure (voir le tableau ci-dessous),
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, ces unités ne sont pas représentées sous la même forme que les valeurs
de mesure figurant dans le panneauTransformation d’InDesign. Si le système de mesure actif utilise les
picas, parexemple, InDesign renvoie des valeurs fractionnaires sous forme de nombres décimaux, au lieu
d’utiliser les conventions «picas et points» du panneauTransformation. Ainsi, «1p6» est renvoyé sous la
forme «1.5». InDesign procède de cette manière, car 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»,
parexemple, 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 définir les unités de mesure correspondantes au début du script. A la fin du
script, vous pourrez rétablir les unités de mesure initialement utilisées avant l’exécution du script. Vous
pouvez également utiliser des remplacements d’unités de mesures, comme dans beaucoup de nos
exemples de scripts. Un remplacement d’unité de mesure est une chaîne contenant un caractère spécial,
comme dans les exemples ci-dessous.
RemplacementSignificationExemple
cCicéros (lec peut être suivi de didots, si nécessaire)1.4c
cmCentimètres.635cm
i (ou in)Pouces.25i
Didacticiel de scripts AdobeInDesignCS6Ajout de caractéristiques à «Hello World» 26
RemplacementSignificationExemple
mmMillimètres6.35mm
pPicas (lep peut être suivi de points, si nécessaire)1p6
ptPoints18pt
Ajout de caractéristiques à «Hello World»
Nous allons maintenant créer un script qui modifie la composition «Hello World» créée avec notre
premier script. Ce second script illustre les opérations suivantes:
XObtention du document actif
XUtilisation d’une fonction (ou d’un gestionnaire dansAppleScript)
XObtention des dimensions et des marges des pages du document actif
XRedimensionnement d’un bloc de texte
XChangement de la mise en forme du texte dans son bloc
AppleScript
Vérifiez que le document «Hello World» est bien ouvert; le script suivant fait en effet référence à des
objets que nous avons créés dans ce script. Si vous avez fermé le document sans l’enregistrer, il suffit de
réexécuter le script
Ouvrez le script d’apprentissage
le script:
1.Dans l’éditeur de script, choisissez la commande Fichier> Nouveau pour créer un script.
--the result to the variable "myDocument."
set myDocument to document 1
tell myDocument
HelloWorld.applescript pour créer un nouveau document.
ImprovedHelloWorld.applescript ou procédez comme suit pour créer
--Enter the name of a font on your system, if necessary.
set myFont to font "Helvetica"
--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)
Didacticiel de scripts AdobeInDesignCS6Ajout de caractéristiques à «Hello World» 27
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
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 CS6"
tell document preferences of myDocument
myPageWidth to page width
set myPageHeight to page height
end tell
tell margin preferences of myPage
if side of myPage is left hand then
set myX2 to left
set myX1 to right
else
set myX1 to left
set myX2 to right
end if
set myY1 to top
set myY2 to bottom
end tell
set myX2 to myPageWidth - myX2
set myY2 to myPageHeight - myY2
return {myY1, myX1, myY2, myX2}
end tell
end myGetBounds
3.Enregistrez le script dans un fichier de texte brut avec l’extension.applescript dans le dossier
ScriptsPanel (voir la section
« Installation des scripts » à la page 6).
Après avoir ouvert ou créé le fichier de script, vous pouvez exécuter le script depuis l’éditeur de scripts ou à
partir du panneauScripts d’InDesign.
Didacticiel de scripts AdobeInDesignCS6Ajout de caractéristiques à «Hello World» 28
JavaScript
Vérifiez que le document «Hello World» est bien ouvert; le script suivant fait en effet référence à des
objets que nous avons créés dans ce script. Si vous avez fermé le document sans l’enregistrer, il suffit de
réexécuter le script
HelloWorld.jsx pour créer un nouveau document.
Ouvrez le script d’apprentissage
ImprovedHelloWorld.jsx ou procédez comme suit pour créer le script:
1.Entrez le code JavaScript ci-dessous dans un nouveau fichier texte.
//Improved Hello World!
//Enter the name of a font on your system, if necessary.
try{
//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.centerAlign;
myParagraph.pointSize = 48;
}
}
//myGetBounds is a function that returns the bounds
//of the "live area" of a page.
function myGetBounds(myDocument, myPage){
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight
if(myPage.side == PageSideOptions.leftHand){
var myX2 = myPage.marginPreferences.left;
var myX1 = myPage.marginPreferences.right;
}
else{
var myX1 = myPage.marginPreferences.left;
var myX2 = myPage.marginPreferences.right;
}
var myY1 = myPage.marginPreferences.top;
var myX2 = myPageWidth - myX2;
var myY2 = myPageHeight - myPage.marginPreferences.bottom;
return [myY1, myX1, myY2, myX2];
}
2.Enregistrez le script dans un fichier de texte brut avec l’extension.jsx dans le dossier ScriptsPanel
(voir la section
« Installation des scripts » à la page 6).
Après avoir ouvert ou créé le fichier de script, vous pouvez exécuter le script depuis l’utilitaire ExtendScript
Toolkit ou à partir du panneauScripts d’InDesign.
Didacticiel de scripts AdobeInDesignCS6Ajout de caractéristiques à «Hello World» 29
VBScript
Vérifiez que le document «Hello World» est bien ouvert; le script suivant fait en effet référence à des
objets que nous avons créés dans ce script. Si vous avez fermé le document sans l’enregistrer, il suffit de
réexécuter le script
Ouvrez le script d’apprentissage ImprovedHelloWorld.vbs ou procédez comme suit pour créer le script:
1.Lancez un éditeur de texte (Bloc-notes, par exemple).
2.Entrez le code ci-dessous.
Set myInDesign = CreateObject("InDesign.Application")
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.idCenterAlign
Rem myGetBounds is a function that returns the bounds
Rem of the "live area" of a page.
Function myGetBounds(myDocument, myPage)
3.Enregistrez le texte dans un fichier de texte brut avec l’extension.vbs dans le dossierScripts (voir la
section
« Installation des scripts » à la page 6).
Après avoir ouvert ou créé le fichier de script, vous pouvez exécuter le script à partir du panneauScripts
d’InDesign.
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 30
document
viewPreferences
horizontalMeasurementUnits
masterSpreads.item(0)
pages.item(0)
verticalMeasurementUnits
rulerOrigin
marginPreferences
top
left
bottom
right
columnCount
columnGutter
Construction d’un document
Bien entendu, le script «Hello World!» ne sera pas d’une grande utilité pour votre travail quotidien, mais
il vous a permis de vous familiariser avec les notions de base de la création de scriptsInDesign. Dans la
section suivante, nous allons vous présenter un script plus élaboré qui implique des techniques de
création de scripts que vous êtes susceptibles d’utiliser dans vos propres scripts.
Vous pouvez utiliser un scriptInDesign à tout moment dans votre processus de production. Toutefois,
nous commencerons par créer un script débutant au même point que vous: nous allons créer un nouveau
document, définir des marges de page, puis définir et appliquer des gabarits. Le schéma ci-après
représente les objets que nous allons utiliser.
Dans cette section, nous allons étudier le script d’apprentissage DocumentTemplate. Nous diviserons le
script en une série de blocs, chaque bloc représentant une zone ou une opération spécifique de création
de scriptsInDesign.
REMARQUE : l’illustration ci-dessus utilise la versionJavaScript des termes de création de scripts. Pour le
langageAppleScript, vous ajoutez des espaces entre les mots (
viewPreferences); pour le langageVBScript, vous utilisez un numéro d’élément commençant à1,
au lieu de0 (
viewpreferences, au lieu de
masterSpreads.item(1), au lieu de masterSpreads.item(0)). En dehors de ces légères
différences d’espacement et de casse, et des quelques mots propres à chaque langage, les termes utilisés
dans les différents langages sont identiques.
Les objets dans le modèle d’objet correspondent en général aux noms des commandes dans l’interface
utilisateur, comme indiqué dans le schéma ci-après (lequel utilise aussi la formeJavaScript des termes de
création de scripts).
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 31
Dans les sections suivantes, nous allons aborder les différentes zones fonctionnelles du script
DocumentConstruction. Ouvrez ce script dans l’éditeur de scripts du langage de votre choix pour
pouvoir suivre la procédure.
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 32
Configuration des unités de mesure et des marges des planchestypes
L’extrait de script suivant indique comment créer un document et définir les marges de la première
planchetype.
AppleScript
tell application "Adobe InDesign CS6"
--Create a new document.
set myDocument to make document
--Set the measurement units and ruler origin.
set horizontal measurement units of view preferences to points
set vertical measurement units of view preferences to points
set ruler origin of view preferences to page origin
--Get a reference to the first master spread.
set myMasterSpread to master spread 1 of myDocument
--Get a reference to the margin preferences of the first page in the master spread.
tell margin preferences of page 1 of myMasterSpread
--Now set up the page margins and columns.
set left to 84
set top to 70
set right to 70
set bottom to 78
set column count to 3
set column gutter to 14
end tell
--Page margins and columns for the right-hand page.
tell margin preferences of page 2 of myMasterSpread
set left to 84
set top to 70
set right to 70
set bottom to 78
set column count to 3
set column gutter to 14
end tell
JavaScript
//Create a new document.
var myDocument = app.documents.add();
//Set the measurement units and ruler origin.
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.rulerOrigin = RulerOrigin.pageOrigin;
//Get a reference to the first master spread.
var myMasterSpread = myDocument.masterSpreads.item(0);
//Get a reference to the margin preferences of the first page in the master spread.
var myMarginPreferences = myMasterSpread.pages.item(0).marginPreferences;
//Now set up the page margins and columns.
myMarginPreferences.left = 84;
myMarginPreferences.top = 70;
myMarginPreferences.right = 70;
myMarginPreferences.bottom = 78;
myMarginPreferences.columnCount = 3;
myMarginPreferences.columnGutter = 14;
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 33
document
gridPreferences
baselineDivision
baselineStart
baselineGridShown
//Page margins and columns for the right-hand page.
var myMarginPreferences = myMasterSpread.pages.item(1).marginPreferences;
myMarginPreferences.left = 84;
myMarginPreferences.top = 70;
myMarginPreferences.right = 70;
myMarginPreferences.bottom = 78;
myMarginPreferences.columnCount = 3;
myMarginPreferences.columnGutter = 14;
VBScript
Entrez le code suivant dans votre éditeur de script ou de texte, ou ouvrez le script
d’apprentissage
Set myInDesign = CreateObject("InDesign.Application")
Rem Create a new document.
Set myDocument = myInDesign.Documents.Add()
Rem Set the measurement units and ruler origin.
myDocument.ViewPreferences.HorizontalMeasurementUnits = idMeasurementUnits.idPoints
myDocument.ViewPreferences.VerticalMeasurementUnits = idMeasurementUnits.idPoints
myDocument.ViewPreferences.RulerOrigin = idRulerOrigin.idPageOrigin
Rem Get a reference to the first master spread.
Set myMasterSpread = myDocument.MasterSpreads.Item(1)
Rem Get a reference to the margin preferences of the first page in the master spread.
Set myMarginPreferences = myMasterSpread.Pages.Item(1).MarginPreferences
Rem Now set up the page margins and columns.
myMarginPreferences.Left = 84
myMarginPreferences.Top = 70
myMarginPreferences.Right = 70
myMarginPreferences.Bottom = 78
myMarginPreferences.ColumnCount = 3
myMarginPreferences.ColumnGutter = 14
Rem Page margins and columns for the right-hand page.
Set myMarginPreferences = myMasterSpread.Pages.Item(2).MarginPreferences
myMarginPreferences.Left = 84
myMarginPreferences.Top = 70
myMarginPreferences.Right = 70
myMarginPreferences.Bottom = 78
myMarginPreferences.ColumnCount = 3
myMarginPreferences.ColumnGutter = 14
DocumentConstruction.vbs.
Ajout d’une grille de ligne de base
Maintenant que la planche type est configurée, nous pouvons ajouter une grille de ligne de base.
Le schéma ci-après présente la relation entre les objets avec lesquels nous allons travailler (il utilise
la forme JavaScript des termes de création de scripts).
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 34
AppleScript
set myGridPreferences to grid preferences
set baseline division of myGridPreferences to 14
set baseline start of myGridPreferences to 70
set baseline grid shown of myGridPreferences to true
Nous allons maintenant ajouter deux blocs de texte aux pages de gabarit. Ces blocs sont destinés à contenir
le caractère spécial de numérotation de page automatique et seront positionnés au bas de la page.
Dans l’exemple «Hello World», nous avons créé un bloc de texte et spécifié sa position et sa taille à l’aide
de la propriété de délimitation géométrique (un tableau de données contenant les coordonnées des
bords supérieur, gauche, inférieur et droit du bloc). Ces coordonnées correspondent aux coins du bloc,
comme ils apparaîtraient dans le panneauContrôle. Les délimitations géométriques sont les suivantes:
haut=728, gauche=70, bas=742 et droite=528, comme indiqué dans les deux illustrations ci-après.
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 35
AppleScript
set myLeftPage to page 1 of myMasterSpread
set myRightPage to page 2 of myMasterSpread
tell myLeftPage
set myLeftFooter to make text frame
set geometric bounds of myLeftFooter to {728, 70, 742, 528}
set first baseline offset of text frame preferences of myLeftFooter to leading
offset
set contents of myLeftFooter to auto page number
set point size of character 1 of parent story of myLeftFooter to 11
set leading of character 1 of myLeftFooter to 14
end tell
tell myRightPage
set myRightFooter to make text frame
set geometric bounds of myRightFooter to {728, 84, 742, 542}
set first baseline offset of text frame preferences of myRightFooter to leading
offset
set contents of myRightFooter to auto page number
set point size of character 1 of parent story of myRightFooter to 11
set leading of character 1 of myRightFooter to 14
set justification of character 1 of myRightFooter to right align
Nous allons à présent ajouter des blocs de texte types. Le schéma ci-après présente les objets et les
propriétés que nous utiliserons (sous la forme JavaScript des termes de création de scripts).
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 37
AppleScript
tell myLeftPage
set myLeftTextFrame to make text frame
set geometric bounds of myLeftTextFrame to {70, 70, 714, 528}
set first baseline offset of text frame preferences of myLeftTextFrame to leading
offset
set text column count of text frame preferences of myLeftTextFrame to 3
set text column gutter of text frame preferences of myLeftTextFrame to 14
--Add a label to make the frame easier to find later on.
set label of myLeftTextFrame to "BodyTextFrame"
end tell
tell myRightPage
set myRightTextFrame to make text frame
set geometric bounds of myRightTextFrame to {70, 84, 714, 542}
set first baseline offset of text frame preferences of myRightTextFrame to leading
offset
end tell
--Link the two frames using the next text frame property.
set next text frame of myLeftTextFrame to myRightTextFrame
set text column count of text frame preferences of myRightTextFrame to 3
set text column gutter of text frame preferences of myRightTextFrame to 14
--Add a label to make the frame easier to find later on.
set label of myRightTextFrame to "BodyTextFrame"
JavaScript
var myLeftPage = myMasterSpread.pages.item(0);
var myRightPage = myMasterSpread.pages.item(1);
var myLeftTextFrame = myLeftPage.textFrames.add();
myLeftTextFrame.geometricBounds = [70, 70, 714, 528];
myLeftTextFrame.textFramePreferences.firstBaselineOffset =
FirstBaseline.leadingOffset;
myLeftTextFrame.textFramePreferences.textColumnCount = 3;
myLeftTextFrame.textFramePreferences.textColumnGutter = 14;
//Add a label to make the frame easier to find later on.
myLeftTextFrame.label = "BodyTextFrame";
var myRightTextFrame = myRightPage.textFrames.add();
myRightTextFrame.geometricBounds = [70, 84, 714, 542];
myRightTextFrame.textFramePreferences.firstBaselineOffset =
FirstBaseline.leadingOffset;
myRightTextFrame.textFramePreferences.textColumnCount = 3;
myRightTextFrame.textFramePreferences.textColumnGutter = 14;
//Add a label to make the frame easier to find later on.
myRightTextFrame.label = "BodyTextFrame";
//Link the two frames using the nextTextFrame property.
myLeftTextFrame.nextTextFrame = myRightTextFrame;
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 38
Rem Add a label to make the frame easier to find later on.
myLeftTextFrame.Label = "BodyTextFrame"
Set myRightTextFrame = myRightPage.TextFrames.Add
myRightTextFrame.GeometricBounds = Array(70, 84, 714, 542)
myRightTextFrame.TextFramePreferences.FirstBaselineOffset =
idFirstBaseline.idLeadingOffset
myRightTextFrame.TextFramePreferences.TextColumnCount = 3
myRightTextFrame.TextFramePreferences.TextColumnGutter = 14
Rem Add a label to make the frame easier to find later on.
myRightTextFrame.Label = "BodyTextFrame"
Rem Link the two frames using the nextTextFrame property.
myLeftTextFrame.NextTextFrame = myRightTextFrame
Remplacement des éléments de gabarit et ajout de texte
Nous allons maintenant remplacer l’un des blocs de texte types créé précédemment et ajouter du texte.
AppleScript
tell text frame 1 of page 2 of master spread 1 of myDocument
set myTextFrame to override destination page page 1 of myDocument
end tell
--Add text by setting the contents of an insertion point to a string.
--In AppleScript, "return" is a return character.
set contents of insertion point 1 of myTextFrame to "Headline!" & return
JavaScript
var myTextFrame =
myDocument.masterSpreads.item(0).pages.item(1).textFrames.item(0).override(myDocument
.pages.item(0));
//Add text by setting the contents of an insertion point to a string.
//In JavaScript, "\r" is a return character.
myTextFrame.insertionPoints.item(0).contents = "Headline!\r";
VBScript
Set myTextFrame =
myDocument.MasterSpreads.Item(1).Pages.Item(2).TextFrames.Item(1).Override(myDocument
.Pages.Item(1))
Rem Add text by setting the contents of an insertion point to a string.
Rem In VBScript, vbCr is a return character.
myTextFrame.InsertionPoints.Item(1).Contents = "Headline!" & vbCr
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 39
appliedFont
pointSize
spaceBefore
spaceAfter
fillColor
document
paragraphStyle
paragraphStyles
fontStyle
Ajout et application d’un style de paragraphe
Nous proposons d’ajouter un style de paragraphe au titre pour le mettre en forme. Pour cela, nous devons
créer le style de paragraphe. Le schéma ci-après indique les objets et les propriétés qui seront utilisés
(encore une fois, la forme JavaScript des termes de création de scripts est utilisée dans le texte).
AppleScript
--First, check to see if the paragraph style already exists.
try
set myParagraphStyle to paragraph style "Heading 1" of myDocument
on error
--The paragraph style did not exist, so create it.
tell myDocument
set myParagraphStyle to make paragraph style with properties {name:"Heading 1"}
end tell
end try
--We'll need to create a color. Check to see if the color already exists.
try
set myColor to color "Red" of myDocument
on error
--The color did not exist, so create it.
tell myDocument
set myColor to make color with properties {name:"Red", model:process,
color value:{0, 100, 100, 0}}
end tell
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 40
end try
--Now set the formatting of the paragraph style.
try
set applied font of myParagraphStyle to "Arial"
set font style of myParagraphStyle to "Bold"
end try
set point size of myParagraphStyle to 24
set space after of myParagraphStyle to 24
set space before of myParagraphStyle to 24
set fill color of myParagraphStyle to color "Red" of myDocument
--Apply the style to the paragraph.
tell paragraph 1 of myTextFrame to apply paragraph style using myParagraphStyle with
clearing overrides
--You could also use:
--set applied paragraph style of paragraph 1 of myTextFrame to myParagraphStyle
JavaScript
var myParagraphStyle = myDocument.paragraphStyles.item("Heading 1");
try {
var myName = myParagraphStyle.name;
}
catch (myError){
//The paragraph style did not exist, so create it.
myParagraphStyle = myDocument.paragraphStyles.add({name:"Heading 1"});
}
//We'll need to create a color. Check to see if the color already exists.
var myColor = myDocument.colors.item("Red");
try {
myName = myColor.name;
}
catch (myError){
//The color did not exist, so create it.
myColor = myDocument.colors.add({name:"Red", model:ColorModel.process,
colorValue:[0,100,100,0]});
}
//Now set the formatting of the paragraph style.
myParagraphStyle.appliedFont = "Arial";
myParagraphStyle.fontStyle = "Bold";
myParagraphStyle.pointSize = 24;
myParagraphStyle.spaceAfter = 24;
myParagraphStyle.spaceBefore = 24;
myParagraphStyle.fillColor = myDocument.colors.item("Red");
//Apply the style to the paragraph.
myDocument.pages.item(0).textFrames.item(0).paragraphs.item(0).applyParagraphStyle(
myParagraphStyle, true);
//You could also use:
//myDocument.pages.item(0).textFrames.item(0).paragraphs.item(0).appliedParagraphStyl
e = myParagraphStyle;
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 41
VBScript
Rem First, check to see if the paragraph style already exists.
Rem to do this, we disable error checking:
On Error Resume Next
Set myParagraphStyle = myDocument.ParagraphStyles.Item("Heading 1")
Rem if an error occurred on the previous line, then the paragraph
Rem style did not exist.
If Error.Number <> 0 Then
Set myParagraphStyle = myDocument.ParagraphStyles.Add
myParagraphStyle.Name = "Heading 1"
Error.Clear
End If
Rem We'll need to create a color. Check to see if the color already exists.
Set myColor = myDocument.Colors.Item("Red")
End If
Rem Resume normal error handling.
On Error GoTo 0
Rem Now set the formatting of the paragraph style.
myParagraphStyle.AppliedFont = "Arial"
myParagraphStyle.FontStyle = "Bold"
myParagraphStyle.PointSize = 24
myParagraphStyle.SpaceAfter = 24
myParagraphStyle.SpaceBefore = 24
myParagraphStyle.FillColor = myDocument.Colors.Item("Red")
Rem Apply the style to the paragraph.
myDocument.Pages.Item(1).TextFrames.Item(1).Paragraphs.Item(1).ApplyParagraphStyle
myParagraphStyle, True
Rem You could also use:
Rem
myDocument.pages.item(1).textFrames.item(1).paragraphs.item(1).appliedParagraphStyle
= myParagraphStyle
Importation d’un fichier texte
Nous sommes prêts à importer un fichiertexte. Nous allons ajouter le texte à la suite du titre, dans le
premier bloc de texte de la première page. Le script ouvre une boîte de dialogue dans laquelle vous
pouvez sélectionner le fichier texte à importer.
AppleScript
--Display a standard open file dialog box to select a text file.
set myTextFile to choose file ("Choose a text file")
--If a text file was selected, and if you didn't press Cancel,
--place the text file at the first insertion point after the headline.
if myTextFile is not "" then
tell insertion point -1 of myTextFrame to place myTextFile
end if
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 42
JavaScript
//Display a standard open file dialog box to select a text file.
var myTextFile = File.openDialog("Choose a text file");
//If a text file was selected, and if you didn't press Cancel,
//place the text file at the first insertion point after the headline.
if((myTextFile != "")&&(myTextFile != null)){
Rem Display a standard open file dialog box to select a text file.
Rem VBScript does not have the ability to do this, so we'll use
Rem a JavaScript to get a file name. We'll run the JavaScript using
Rem InDesign's DoScript feature.
Rem Disable normal error handling.
On Error Resume Next
Rem Create a JavaScript as a string.
myJavaScriptString = "var myTextFile = File.openDialog(""Choose a text
file"");myTextFile.fsName;"
Rem Run the JavaScript using DoScript.
myFileName = myInDesign.DoScript(myJavaScriptString, idScriptLanguage.idJavascript)
If Error.Number = 0 Then
Rem Place the text file at the end of the text frame.
myTextFrame.InsertionPoints.Item(-1).Place myFileName
Error.Clear
End If
Rem Restore normal error handling.
On Error GoTo 0
Importation d’une image
Vous importez une image tout comme s’il s’agissait d’un fichier texte. Le script ouvre une boîte de dialogue
dans laquelle vous pouvez sélectionner l’image à importer. Lors de l’importation de l’image, InDesign
renvoie une référence à l’image elle-même, plutôt qu’au bloc qui la contient. Pour obtenir une référence au
bloc, utilisez la propriété
style d’objet au bloc.
parent de l’image. Une fois cette référence obtenue, vous pouvez appliquer un
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 43
AppleScript
--Display a standard open file dialog box to select a graphic file.
set myGraphicFile to choose file "Choose graphic file."
--If a graphic file was selected, and if you didn't press Cancel,
--place the graphic file on the page.
if myGraphicFile is not "" then
set myGraphic to place myGraphicFile on page 1 of myDocument
--Since you can place multiple graphics at once, the place method
--returns an array. To get the graphic you placed, get the first
--item in the array.
set myGraphic to item 1 of myGraphic
--Create an object style to apply to the graphic frame.
try
set myObjectStyle to object style "GraphicFrame" of myDocument on error
--The object style did not exist, so create it.
tell myDocument
set myObjectStyle to make object style with properties{name:"GraphicFrame"}
end tell
end try
set enable stroke of myObjectStyle to true
set stroke weight of myObjectStyle to 3
set stroke type of myObjectStyle to stroke style "Solid" of myDocument
set stroke color of myObjectStyle to color "Red" of myDocument
--The frame containing the graphic is the parent of the graphic.
set myFrame to parent of myGraphic
tell myFrame to apply object style using myObjectStyle
--Resize the frame to a specific size.
set geometric bounds of myFrame to {0, 0, 144, 144}
--Fit the graphic to the frame proportionally.
fit myFrame given proportionally
--Next, fit frame to the resized graphic.
fit myFrame given frame to content
set myBounds to geometric bounds of myFrame
set myGraphicWidth to (item 4 of myBounds) - (item 2 of myBounds)
--Move the graphic frame.
set myPageWidth to page width of document preferences of myDocument
set myMarginPreferences to margin preferences of page 1 of myDocument
set myTopMargin to top of myMarginPreferences
move myFrame to {myPageWidth - myGraphicWidth, myTopMargin}
--Apply a text wrap to the graphic frame.
set text wrap mode of text wrap preferences of myFrame to bounding box text wrap
set text wrap offset of text wrap preferences of myFrame to {24, 12, 24, 12}
end if
end tell
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 44
JavaScript
//Display a standard open file dialog box to select a graphic file.
var myGraphicFile = File.openDialog("Choose a graphic file");
//If a graphic file was selected, and if you didn't press Cancel,
//place the graphic file on the page.
if((myGraphicFile != "")&&(myGraphicFile != null)){
var myGraphic = myDocument.pages.item(0).place(myGraphicFile);
//Since you can place multiple graphics at once, the place method
//returns an array. To get the graphic you placed, get the first
//item in the array (JavaScript arrays start with item 0).
myGraphic = myGraphic[0];
//Create an object style to apply to the graphic frame.
var myObjectStyle = myDocument.objectStyles.item("GraphicFrame");
try {
var myName = myObjectStyle.name;
}
catch (myError){
//The object style did not exist, so create it.
myObjectStyle = myDocument.objectStyles.add({name:"GraphicFrame"});
}
myObjectStyle.enableStroke = true;
myObjectStyle.strokeWeight = 3;
myObjectStyle.strokeType = myDocument.strokeStyles.item("Solid");
myObjectStyle.strokeColor = myDocument.colors.item("Red");
//The frame containing the graphic is the parent of the graphic.
var myFrame = myGraphic.parent;
myFrame.applyObjectStyle(myObjectStyle, true);
//Resize the frame to a specific size.
myFrame.geometricBounds = [0,0,144,144];
//Fit the graphic to the frame proportionally.
myFrame.fit(FitOptions.proportionally);
//Next, fit frame to the resized graphic.
myFrame.fit(FitOptions.frameToContent);
var myBounds = myFrame.geometricBounds;
var myGraphicWidth = myBounds[3]-myBounds[1];
//Move the graphic frame.
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myTopMargin = myDocument.pages.item(0).marginPreferences.top;
myFrame.move([myPageWidth-myGraphicWidth, myTopMargin]);
//Apply a text wrap to the graphic frame.
myFrame.textWrapPreferences.textWrapMode = TextWrapModes.BOUNDING_BOX_TEXT_WRAP;
myFrame.textWrapPreferences.textWrapOffset = [24, 12, 24, 12];
}
Didacticiel de scripts AdobeInDesignCS6Construction d’un document 45
VBScript
Rem create an object style
On Error Resume Next
Set myObjectStyle = myDocument.ObjectStyles.Item("GraphicFrame")
If Error.Number <> 0 Then
Set myObjectStyle = myDocument.ObjectStyles.Add
myObjectStyle.Name = "GraphicFrame"
Error.Clear
End If
On Error GoTo 0
myObjectStyle.EnableStroke = True
myObjectStyle.StrokeWeight = 3
myObjectStyle.StrokeType = myDocument.StrokeStyles.Item("Solid")
myObjectStyle.StrokeColor = myDocument.Colors.Item("Red")
Rem Again, we'll use a JavaScript to get a file name.
Rem Disable normal error handling.
On Error Resume Next
Rem Create a JavaScript as a string.
myJavaScriptString = "var myTextFile = File.openDialog(""Choose a graphic
file"");myTextFile.fsName;"
Rem Run the JavaScript using DoScript.
myGraphicFileName = myInDesign.DoScript(myJavaScriptString,
idScriptLanguage.idJavascript)
If Error.Number = 0 Then
On Error GoTo 0
Set myGraphic = myDocument.Pages.Item(1).Place(myGraphicFileName)
Rem Since you can place multiple graphics at once, the place method
Rem returns an object collection. To get the graphic you placed, get the first
Rem item in the collection.
Set myGraphic = myGraphic.Item(1)
Rem Create an object style to apply to the graphic frame.
Rem The frame containing the graphic is the parent of the graphic.
Set myFrame = myGraphic.Parent
myFrame.ApplyObjectStyle myObjectStyle, True
Rem Resize the frame to a specific size.
myFrame.GeometricBounds = Array(0, 0, 144, 144)
Rem Fit the graphic to the frame proportionally.
myFrame.Fit idFitOptions.idProportionally
Rem Next, fit frame to the resized graphic.
myFrame.Fit idFitOptions.idFrameToContent
myBounds = myFrame.GeometricBounds
myGraphicWidth = myBounds(3) - myBounds(1)
Rem Move the graphic frame.
myPageWidth = myDocument.DocumentPreferences.PageWidth
myTopMargin = myDocument.Pages.Item(1).MarginPreferences.Top
myFrame.Move Array(myPageWidth - myGraphicWidth, myTopMargin)
Rem Apply a text wrap to the graphic frame.
myFrame.TextWrapPreferences.TextWrapMode =
idTextWrapModes.idBoundingBoxTextWrap
myFrame.TextWrapPreferences.TextWrapOffset = Array(24, 12, 24, 12)
End If
Didacticiel de scripts AdobeInDesignCS6Perfectionnement 46
Perfectionnement
Désormais, vous savez comment créer un document, configurer des éléments de gabarit, entrer du texte,
importer du texte, créer et appliquer des styles de paragraphe, créer et appliquer des styles d’objet,
importer des images, adapter des images aux blocs et appliquer un habillage de texte. Le document que
vous avez créé est un document simple, mais qui vous a permis de maîtriser les notions de base de la
création de scriptsInDesign. Pour chaque exemple, nous avons créé des objets, défini des propriétés
d’objet et utilisé des méthodes d’objet.
Consultez le Guide des scripts d’AdobeInDesign pour passer à l’étape suivante d’apprentissage de création
de scriptsInDesign. Ce guide vous propose des didacticiels plus avancés traitant de la construction de
documents, la mise en forme du texte, la recherche et le remplacement de texte, la création d’interfaces
utilisateur, l’ajout de commandes de menu, ainsi que l’utilisation du langageXML et des règlesXML.
Pour en savoir plus sur la création de scriptsInDesign, vous pouvez également consulter le forum des
utilisateurs consacré aux scriptsInDesign (en anglais), à l’adresse suivante: http://www.adobeforums.com
Dans ce 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.
Consultez également la page d’accueil des scriptsInDesign, à l’adresse