AppleScript - Quark XPress
Un dossier technique sur le scripting
applicatif de Quark XPress
RCI Informatique, Janvier 2006
1 - Automatisation de Quark XPress
Le logiciel de mise en pages Quark XPress peut être utilisé de différentes façons :
- Utilisation normale, en utilisant les menus et sous-menus décrits dans la documentation.
- Utilisation normale, avec des fonctionnalités complémentaires apportées par diverses extensions disponibles.
-
Intégration avec d'autres applications, en tant qu'ensemble de fonctionnalités
scriptables
C'est cette dernière approche, l'intégration avec d'autres applications, qui est abordée dans ce document.
2 - Application = ensemble de structure de données (les objets "gérés" par l"application) et ensemble d'actions automatisables
Un document XPress est constitué d'un ensemble de pages, comportant des "objets" de diverses natures. Entre autres, des blocs texte, des blocs images, des tableaux, des filets, etc.
La documentation "utilisateur" décrit comment agir sur ces objets en utilisant les menus, sous-menus et boîtes de dialogue, en résumé, l'interface-utilisateur.
En programmation "par scripts", on ne "voit" plus les objets XPress de la même façon. On voit les objets XPress en tant qu'"objets informatiques", possédant des "attributs" ou "propriétés", et sur lesquels on peut "agir" par des ordres de programmation, que l'on appelle des "commandes" ou "méthodes".
3 - AppleScript
• AppleScript est le langage de programmation conçu par Apple pour contrôler les applications Macintosh, non plus en utilisant l' interface-utilisateur "classique" de ces applications, mais en mettant en œuvre un ensemble de commandes, extérieures à ces applications, agissant sur ces applications.
• AppleScript permet de réaliser :
- Des programmes de type "batch" contrôlant une ou plusieurs applications.
- Des programmes interactifs contrôlant une ou plusieurs applications.
- Des programmes automatisant les échanges de données entre applications.
- Des programmes établissant une coopération dynamique, via le réseau, entre applications installées sur des machines différentes.
- Des programmes agissant de façon séquentielle ou interactive sur le système d'exploitation.
• En utilisant AppleScript, on ne considère plus les applicatifs comme des logiciels fermés, mais comme une collection de fonctionnalités et de modules, structurés, et accessibles à travers un langage de description et de commande.
• Avec AppleScript on peut accéder aux fonctions spécifiques d'un logiciel, directement, sans utiliser les menus.
• Le copier-coller, ou les liens entre applications permettaient déjà des transferts simples de données. AppleScript permet d'organiser ces échanges de données avec des algorithmes de contrôle et de traitement.
• En travaillant directement sur les structures de données des différentes applications, le programmeur n'est plus dépendant de la disposition à un instant donné des différentes fenêtres, des dialogues, des états de menus. Les automatismes que l'on va créer pourront être indépendants du contexte.
• De nombreuses applications bureautiques intègrent des "langages de scripting". Ces langages sont plus ou moins structurés, plus ou moins liés aux commandes disponibles dans les menus, plus ou moins aptes à être étendus par de nouvelles commandes. AppleScript offre un langage standard et puissant de contrôle des applications "scriptables".
• AppleScript est un langage
complet, disposant des commandes, structures de contrôle, structures de données.
Sa syntaxe comporte des structures de listes, de gestion d'attributs/valeurs, et
surtout de l'accès à la richesse sans limite des fonctionnalités et structures
de données des différents applicatifs qu' AppleScript va permettre de contrôler.
4 -
AppleScript et la programmation Inter-Applications
• Devant un projet de développement spécifique d'une application, plusieurs stratégies sont possibles actuellement :
- Mise en œuvre d'un langage généraliste de haut-niveau, tel que Pascal, C ou C++
et des routines d'accès aux fonctions de fenêtrage, gestion de fichiers et autres fonctions intégrées au système.
- Utilisation d'un système de gestion de fichiers, intégrant des outils de création de masques de saisie et interface utilisateur, ainsi que des outils de création d' états. Citons FileMaker Pro, 4D, Omnis, FoxPro, Access, etc.
- Utilisation d'un SGBD relationnel SQL et programmation de l'interface utilisateur avec des outils spécifiques.
- Enfin, une stratégie de
programmation inter-applications, consistant à intégrer dans un même
développement les fonctionnalités de 2, 3 ou n applicatifs standard.
• Dans le cadre de la stratégie inter-applications, AppleScript représente un outil essentiel, qui va pouvoir jouer le rôle de "liant" entre les fonctionnalités des diverses applications.
• Aux débuts de la
micro-informatique, on avait constaté l'apparition d'une génération de
progiciels, les "intégrés". Mais ces logiciels, avaient en grande partie
disparu, victimes de défauts majeurs : Faiblesse manifeste de certaines des
fonctionnalités, trop grande complexité de l'ensemble, Tendance au gigantisme de
la documentation papier.
• L'approche de la programmation inter-applications avec AppleScript permet de retrouver les avantages des intégrés, sans les inconvénients :
- Liberté dans le choix et le rythme d'acquisition des différents logiciels.
- Choix des meilleurs outils pour chacune des fonctions de base.
- Utilisation, pour Macintosh OS, d'un langage unique : AppleScript.
• Un nouveau métier apparaît, celui d'intégrateur d'applications.
- Le programmeur "traditionnel" devait avant tout bien connaître les routines de base du langage utilisé.
- L'intégrateur d'applications doit connaître, au contraire, les fonctionnalités des logiciels (Tableur, Gestionnaire de Fichier, Logiciel de Mise en Page, ...) mis en œuvre simultanément.
- Le programmeur "traditionnel" était proche de la machine ou du système, l'intégrateur d'application doit au contraire être proche de l'utilisateur et totalement conscient des objectifs fonctionnels à atteindre.
- Ce qui exigeait des semaines ou mois de développement, lorsqu'il fallait tout "réinventer", n'exige plus que des heures ou des journées, si on dispose de puissantes fonctionnalités, modulaires, et conçues de façon à être facilement intégrées.
5 - Quark XPress, Macintosh et AppleScript
En environnement Apple, les principaux logiciels scriptables sont Quark XPress, Microsoft Excel, Microsoft Word (dans une moindre mesure), les logiciels Adobe (Illustrator, Photoshop, InDesign), FileMaker Pro, MacSQL, Adobe Acrobat, ainsi que le "Finder" de Macintosh OS.
En environnement Windows, la technologie OLE Automation permet des fonctionnalités équivalentes, à conditions que les applications disposent d'un dictionnaire d'objets et de méthodes publiées et disponibles. L'un des langages les plus utilisés, sous Windows, est VBA (Visual Basic Applications), fourni en standard avec la suite logicielle Microsoft Office.
Quark XPress est très utilisé dans le domaine de la presse, de l'édition et de la communication.
Y compris pour la version 6.5, introduite en janvier 2005, il n'est automatisable, par scripts, que dans sa version Macintosh.
Certaines applications de PAO, comportent un langage de "macro-instructions". C'est le cas de PageMaker d'Aldus /Adobe,
Quark XPress n'est, actuellement, automatisable qu'en utilisant AppleScript.
Certaines actions automatiques peuvent cependant être réalisées par des extensions, ou en utilisant le format XPress Tags.
Le format
XPress Tags permet de créer, par programmation ou scripts, à l'extérieur de
Quark XPress, des "flots de texte" avec styles.
Cependant, contrairement par exemple au langage MIF (utilisé par FrameMaker) qui permet de créer des documents complexes, à l'extérieur de l'application, ou dans une moindre mesure le langage RTF (pour Microsoft Word), Quark XPress ne dispose pas, jusqu'à la version 6.5, d'un format externe de description de documents.
Pour toutes ces raisons, et du fait des parts de marché d'Apple dans le monde de la presse et de l'édition, une part importante des développements réalisés avec AppleScript depuis les années 1990, ont concerné Quark XPress.
6 - Ce qui est automatisable, de façon simple, avec AppleScript et Quark XPress
La création de nouvelles commandes, destinées à une utilisation interactive avec Quark XPress,
Ces commandes ressemblent à ce qui est possible d'effectuer, dans d'autres logiciels, par des macros-instructions.
Les scripts de cette catégorie sont en général de tailles modestes (quelques lignes à quelques dizaines de lignes).
Voici quelques exemples, effectivement réalisés, de scripts de cette catégorie :
- Affectation d'un nom au bloc texte ou au bloc image sélectionné
- Se positionner sur un bloc nommé, sélectionné dans une liste
- Ajustement automatique de la hauteur d'un bloc texte à son contenu
- Dégroupage puis regroupage d'éléments
- Création automatique d'une image JPEG correspondant à la sélection en cours
- Copier/Coller avec élimination des attributs typographiques
- Comptage de mots et de signes
- Création automatique d'un bloc image avec un fond perdu paramétrable
- Recherche/remplacement selon des règles pré-établies
- Automatismes de création de fichiers PDF et Postscript EPS
- Importation et placement automatisés d'images
- Placement automatisé de blocs texte de type "légende de figures"
- Création automatique de "blocs ancrés"
7 - Utilisation d'AppleScript / Quark XPress pour la programmation d'applications plus complexes
Ce niveau d'utilisation concerne de véritables projets.
La programmation AppleScript y sera en général intégrée dans une organisation des traitements et des fonctionnalités.
Dans des environnements de matériels informatiques hétérogènes, des structures, en réseau, permettront de fédérer les différents modules applicatifs.
D'autres logiciels seront souvent présents, en amont ou en aval de Quark XPress: Bases de données, Tableurs, Traitements de textes, outils d'imposition, systèmes de publication internet/intranet, etc.
Voici quelques exemples, effectivement réalisés avec Quark XPress, pour ce type de projets :
- Bases de données de type "Annuaire d'organismes et de personnes", à partir de laquelle sont produits des documents XPress (papier) et des pages HTML générées dynamiquement pour le site Intranet.
- Saisie en mode web de fiches touristiques, puis génération automatisée des guides papier avec Quark XPress
- Fabrication automatisée dans Quark XPress de pages de style "Trombinoscope" à partir d'informations textuelles importées et de lots de photographies
- Saisie par des rédacteurs de texte dans Word, et de tableaux de chiffres dans Excel, puis intégration automatisée dans des pages XPress
- Extraction automatisée depuis des documents XPress afin d'alimenter des archives
- Extraction automatisée depuis des documents XPress de textes à traduire, puis réintégration des textes traduits dans les mêmes blocs qu'à l'extraction
- Importation et exportation de données, au niveau des blocs, en formats XML et CSV
- Fabrication automatisée dans Quark XPress de planches de cartes de visite, avec mise en oeuvre d'algorithmes complexes d'ajustement de texte, étroitisation, normalisation de la présentation en tenant compte des contenus
- Transferts contrôlés de documents XPress entre répertoires et serveurs
- Combinaison en un seul document XPress de pages extraites de différents documents, de façon à produire des supports de cours personnalisés, reprenant uniquement les thèmes effectivement abordés lors d'une session.
8
- Méthodologie de développement AppleScript / Quark XPress
8.1 - Considérer AppleScript comme un vrai langage
AppleScript est un vrai langage de programmation, capable d'interagir avec des objets, manipulant facilement texte et listes.
Même si c'est un langage plus facile d'accès que des langages tels que Pascal, C, C++, C#, Java, ce langage met en oeuvre des principes de base qu'il serait gênant de ne pas maîtriser: algorithmes, portée des variables, boucles, structuration des programmes, etc.
Avant de se lancer dans le scripting de Quark XPress, il est conseillé de disposer de bases en programmation au travers d'un autre langage, de préférence orienté objet.
8.2 - Nécessité de bien connaître le logiciel Quark XPress
En programmation AppleScript de Quark XPress, on a une vision "de l'intérieur" des objets XPress, non plus à partir des menus et boites de dialogues, mais à partir des propriétés de ces objets.
De nombreuses propriétés (internes) existent pour permettre un sous-menu particulier ou un choix particulier dans une boite de dialogue.
Le programmeur qui connaîtrait XPress de façon insuffisante aura des difficultés à s'orienter dans les objets.
Un informaticien souhaitant scripter QuarkXPress efficacement devrait commencer par suivre des session d'initiation et de perfectionnement puis utiliser le produit assez longuement au travers d' un échantillon assez vaste de vrais documents.
Les concepts suivants doivent en particulier être maitrisés: Les différents types de blocs, le chaînage entre blocs, les groupes de blocs, le placement d'images dans blocs graphiques, la création et l'utilisation de feuilles de style.
8.3 - Nécessité de bien connaître le système Macintosh OS X
En particulier la gestion des volumes, fichiers et type de fichiers.
La plupart des développements XPress/AppleScript ont besoin également d'effectuer des scripts agissant sur le Finder : accès à des fichiers, déplacement d'un fichier d'un répertoire à un autre, création de fichiers temporaires, etc.
De plus, il faut connaître les aspects spécifiques au système de fichiers Macintosh : séparateurs, type, créateur, notion de ressource, associations type/application.
8.4 - Maîtriser les actions élémentaires de scripting Quark XPress avant de se
lancer dans des développements complexes
Prenons un exemple: On veut alimenter automatiquement un bloc de texte avec des données issues du tableur Excel.
Il faudra maitriser les différents points suivants :
- Savoir faire appel, dans une même "boucle", successivement à Excel et à XPress
- Savoir ouvrir un document Excel dont le nom et le répertoire sont stockés dans une variable AppleScript
- Savoir parcourir les cellules d'une zone Excel nommée
- Savoir ignorer les cellules Excel masquées
- Savoir nommer un bloc texte XPress
- Savoir accéder au bloc texte XPress ayant un nom précis
- Savoir invoquer depuis AppleScript des styles paragraphe et caractère XPress
- Savoir générer avec AppleScript des lettrines XPress
Une action ne doit être considérée comme "faisable" avec un langage de programmation que lorsque les faits ont prouvé de multiples fois que c'était le cas.
Pour le scripting de Quark XPress, on est de plus confronté à une documentation succinte.
Pour ces raisons, l'expérimentation est vitale au programmeur.
Le programmeur doit valider les différentes "briques logicielles" dont il peut disposer, avant de se lancer dans toute construction.
8.5 - Organiser les scripts en fonctions et procédures, et les regrouper dans des bibliothèques de scripts
Dès qu'une même succession d'instructions existe à différents endroits d'un programme, on peut envisager de créer une procédure ou une fonction.
On ne devrait JAMAIS multiplier des instructions par copier/coller, ni dupliquer des objets comportant du code.
Dès que l'on a plusieurs procédures ou fonctions, proches l'une des autres en contenu, on peut envisager de les "généraliser" en une seule, en ajoutant des arguments.
Dès que l'on a une collection de fonctions et de procédures qui sont opérationnelles, on peut envisager de les regrouper dans une "bibliothèque" ou "librairie". Un avantage des bibliothèques est également de masquer le "code source". On peut donc "mettre à disposition" un ensemble de fonctionnalités AppleScript, tout en conservant la confidentialité des instructions utilisées dans les scripts.
Un autre avantage des bibliothèques de scripts consiste dans leur aspect "dynamique".
Un script, à son début, peut choisir de charger une bibliothèque de scripts ou une autre.
Par exemple, on peut avoir une bibliothèque de scripts prenant en charge la version Macintosh Excel 2002, et une autre la version Macintosh Excel 2004.
Au début du script on "déterminera" la version d'Excel,
installée sur la machine utilisée actuellement et selon la valeur obtenue on
ouvrira l'une des deux bibliothèques.
8.6 - Gérer les versions successives d'un développement
Par exemple, on commence à la version 1.01.
A chaque étape du développement on "incrémente" ce numéro de version.
On va placer "en tests" la version 1.05. les test vont être menés sur plusieurs journées, par des personnes différentes.
Pendant ce temps le programmeur sera passé à la version 1.06, puis 1.07, etc.
Chaque version intermédiaire aura été sauvegardée soigneusement. En même temps, le dossier technique de programmation aura été complété, indiquant ce qui a été ajouté ou modifié dans les versions 1.06 et 1.07.
Les utilisateurs ou testeurs auront, de leur côté, établi la liste des bugs ou améliorations à apporter, au vu de la version de tests 1.05
A ce moment, le programmeur intégrera, dans la version la plus récente (1.07) les remarques des utilisateurs relatifs à la version 1.05
Cela permettra de créer, des versions successives 1.08, 109, 1.10.
La version 1.10 sera à nouveau proposée aux tests des utilisateurs. Si ces tests sont satisfaisants, alors cette version 1.10 peut être déclarée "en production".
Et cela va pouvoir continuer, au fur et à mesure du développement de nouvelles fonctionnalités.
AppleScript est particulièrement compatible avec les techniques de développement rapide.
Un développement AppleScript peut être comparé à une sculpture. On part d'une ébauche, qui est ensuite affinée, polie, jusqu'à donner satisfaction aux utilisateurs.
Programmeur(s) et utilisateur(s) travaillent en étroite collaboration, si possible sans intermédiaires.
Il faudra éviter la multiplication de spécifications verbeuses qui souvent se perdent dans les détails en omettant ce qui est important.
On peut de plus également alterner tests de faisabilité et développement effectif.
8.7 - Tout stocker en réseau, rien sur les disques durs respectifs des différents postes de travail
Arborescences de données et modules des programmes seront stockés "en réseau"
Des "alias" de répertoires et des programmes seront installés sur chaque poste de travail.
De cette façon on pourra disposer en réseau, à la fois de la version "en production" du logiciel, mais aussi des versions "en cours de tests".
Aucun fichier ne sera accédé par son chemin "absolu", mais toujours de façon "relative" à la racine du répertoire partagé en réseau.
Par cette technique, les versions "en tests" pourront disposer de jeux de données différents de la version "en production", sans occasionner un travail supplémentaire de programmation.
Des sauvegardes automatiques des données et des programmes pourront être mises en oeuvre, sans se soucier des disques durs particulier de chaque poste de travail.
9 - Exemples de scripts AppleScript / Quark XPress
Tous ces scripts sont extraits des supports de cours de formation au langage AppleScript, formations assurées par RCI Informatique depuis 1994.
9.1 Affecter un nom au bloc Quark XPress actuellement
sélectionné
on
NommageBlocTexte()
--
Copyright RCI Informatique 1992-2005
tell
application "QuarkXPress
Passport"
tell
selection
set
wObj
to object reference
end tell
if
(class of
wObj)
≠ text box then
activate
me
display dialog
"Vous devez sélectionner un bloc texte !"
return
end if
--
On a un bloc texte
set
w
to name
of
wObj
display dialog "Nom
du bloc texte sélectionné ?" default
answer
w
¬
buttons
{"OK", "Fin"}
default button "OK"
set
R
to result
if (button
returned of
R)
≠ "OK" then
return -1
set
w
to text returned
of
R
try
set
name of
wObj
to
w
on
error
display
dialog "Impossible d'attribuer le
nom" & return
& "<" &
w
& ">"
end try
end tell
end
NommageBlocTexte
NommageBlocTexte()
9.2 Ajuster la hauteur d'un bloc texte Quark XPress à son contenu, de façon itérative
Cette méthode consiste à tester la propriété "débordement" d'un bloc texte.
On augmente ou diminue la hauteur du bloc, par étapes successives, jusqu'à ce que l'on ne soit plus dans une situation de débordement
on
AjusterBlocNomme(xBloc,
xPasMoins,
xPasPlus)
--
ajuste un bloc désigné par son nom
--
avec un des pas de diminution/agrandissement
tell
application "QuarkXPress
Passport"
tell
document 1
set
vertical measure to
millimeters
set
horizontal measure to
millimeters
repeat with
k
from 1
to 10
tell
text box
xBloc
if
box overflows then
exit repeat
set
wb
to (bottom
of bounds)
as number
set
wt
to (top
of bounds)
as number
set
wl
to (left
of bounds)
as number
set
wr
to (right
of bounds)
as number
set
newB
to
wb
- (xPasMoins
* k)
--
on diminue cm par cm
if
newB
≤ wt
then exit
repeat
set
bounds to
{wt,
wl,
newB,
wr}
end
tell
end
repeat
repeat with
k
from 1
to 300
tell
text box
xBloc
if
not box overflows
then exit
repeat
set
wb
to (bottom
of bounds)
as number
set
wt
to (top
of bounds)
as number
set
wl
to (left
of bounds)
as number
set
wr
to (right
of bounds)
as number
set
bounds to
{wt,
wl,
wb
+ (k
* xPasPlus),
wr}
end
tell
end
repeat
end
tell
end
tell
end
AjusterBlocNomme
9.3 Ajuster la hauteur d'un bloc texte Quark XPress à son contenu, de façon plus rapide
Cette méthode consiste à ajuster le bas du bloc texte, à la position du dernier caractère. Elle est nettement plus rapide que la précédente, car ne faisant pas appel à des itérations successives.
Il est conseillé, en plus de prévoir le cas où de toute façon le texte sera en débordement, en complétant par le test de "box owerflows"
--
Ajustement d'un bloc à son contenu
--
Tous droits réservés RCI Informatique, 1992-2006
tell
application "QuarkXPress
Passport"
tell
document 1
set
vertical measure to
millimeters
set
horizontal measure to
millimeters
tell
current page
set
wPB
to (bottom
of bounds)
as number
end
tell
tell
text box 1
--
stockage des (4) coordonnées du bloc de texte
set
wt
to (top
of bounds)
as number
set
wl
to (left
of bounds)
as number
set
wb
to (bottom
of bounds)
as number
set
wr
to (right
of bounds)
as number
--
Agrandissement du bloc de texte jusqu'en bas de page
set
bounds to
{wt,
wl,
wPB,
wr}
--
Obtention d'informations sur le dernier caractère
tell
last character
--
de façon relative au début du bloc
set
wBL
to (baseline)
as number
set
wDe
to (descent)
as number
end
tell
--
Restriction de la hauteur du bloc
--
a la position du dernier caractère, augmentée de 1/10e de mm
set
bounds to
{wt,
wl,
wt
+ wBL
+ wDe
+ 0.1,
wr}
end
tell
end
tell
end
tell
9.4 Exemple de fichier XPress Tags
C'est un fichier texte, qui peut être constitué par un script ou un programme totalement extérieur à XPress.
Cela fonctionne avec les versions Macintosh et Windows que Quark XPress.
Cet exemple appelle des feuilles de styles paragraphe et caractères, qui doivent être définis dans le document XPress.
@Style_RCI_1:Lundi
@$:Mardi est le <@StyleCar_RCI_3>deuxième<@$> jour de travail de la semaine
Mercredi
@Style_RCI_1:Jeudi
@$:Vendredi
@Style_RCI_2:Samedi
@$:Dimanche
9.5 Script remplissant un bloc texte XPress et faisant référence à des styles
--
Attribution de feuilles de styles à des paragraphes de texte XPress existants
--
On crée deux feuilles de style "caractères" nommées stc1 et stc2
--
On crée deux feuilles de style "paragraphes" nommées stp1 et stp2, ayant
respectivement comme "attributs de caractères" les styles stc1 et stc2
--
On créé un document XPress avec une seule page et un seul bloc de texte
--
On introduit déjà du texte dans le bloc, dans différents styles
--
le premier paragraphe est, au départ, en style stp2
tell application
"QuarkXPress Passport"
tell
document 1
tell
text box 1
--
effacement de tout le texte
set
contents of
story 1
to ""
make
new paragraph
at end
with properties {contents:"abc",
paragraph style:"stp1"}
make
new paragraph
at end
with properties {contents:"def",
paragraph style:"stp2"}
make
new paragraph
at end
with properties {contents:"ghi",
paragraph style:"stp1"}
make
new paragraph
at end
with properties {contents:"jkl",
paragraph style:"stp2"}
make
new paragraph
at end
with properties {contents:"mnop"
& return & "suite",
paragraph style:"Normal(e)"}
make
new paragraph
at end
with properties {contents:"qrs"
& return & "tuv",
paragraph style:"stp1"}
end
tell
end
tell
end tell
9.6 Script de création d'un tableau XPress. Remplissage des cellules avec du texte.
--
Création d'un tableau de cellules de type texte
tell
application "QuarkXPress
Passport"
--
Création d'un nouveau document Quark XPress
make
new document
--
On s'adresse par la suite au document XPress situé au premier plan
tell
document 1
--
Création d'un tableau de 6 cellules de type texte, nommé MonTableau
make
new table box
at beginning
with properties {column count:1,
row count:6,
name:"MonTableau",
cell type:text cell type}
--
Définition des coordonnées, en millimètres, du rectangle
--
dans lequel se trouve le tableau
set
bounds of
table box "MonTableau"
to {"30mm",
"30mm", "100mm",
"60mm"}
--
Parcours des 6 cellules du tableau
repeat
with
k
from 1
to 6
--
Obtention de l'identifiant de la k-ième cellule en tant que "bloc de texte"
set
wID
to uniqueID
of text cell
k
of table box
"MonTableau"
--
Calcul du texte à écrire dans la cellule
set
w
to ("cellule
" &
k)
as string
--
Définition du contenu de la cellule texte
set
contents of
story 1
of text box
id
wID
to
w
end
repeat
end
tell
end tell
9.7 Script d'importation d'une image JPEG dans un bloc Quark XPress
tell
application "QuarkXPress
Passport"
activate
--
activation et création du nouveau document
make
document at
beginning
tell
document 1
--
les unités seront en centimètres
set
vertical measure to
centimeters
set
horizontal measure to
centimeters
tell
page 1
make
picture box at
beginning --
création d'un bloc image
set
name of
picture box 1
to "BlocB"
--
ce bloc s'appellera BlocB
set
bounds of
picture box "BlocB"
to {5,
7, 12,
18} --
Positionnement
--
Importation dans le bloc image d'une photo présente sous forme de fichier
tell
picture box "BlocB"
set image
1 to
file "HD:Photo3.jpg"
set bounds
of image
1 to
exact fit --
Ajustement de l'image
end
tell
end
tell --
page 1
end
tell --
document 1
end
tell --
XPress
10 - Utilisation d' AppleScript / Quark XPress, en liaison avec Microsoft Excel, FileMaker Pro, Microsoft Word, Adobe Illustrator CS2
10.1 Placement de texte dans des blocs XPress, à partir de données FileMaker Pro
global
NbEnreg
--
Un document FileMaker, nommé Noms.fp5 comportant une rubrique nommée rub_nom,
est déjà ouvert
tell application
"FileMaker Pro"
activate
--
activation FileMaker
show
(every record
of window
"Noms.fp5") --
afficher tous les enregistrements du fichier
--
Détermination du Nb d'enregistrements et stockage dans une variable "globale"
set
NbEnreg
to (count
of record
of window
"Noms.fp5")
end tell
--
Constitution initiale du document XPress
tell
application "QuarkXPress
Passport"
activate
make
document at
beginning
tell
document 1
--
Indication que les mesures seront en cm
set
vertical measure to
centimeters
set
horizontal measure to
centimeters
end
tell
end tell
--
Boucle générale
repeat
with
k
from 1
to
NbEnreg
tell
application "FileMaker Pro"
--
Lecture du contenu de la rubrique de la k-ième fiche Filemaker Pro
set
w
to (cell
"rub_nom" of
record
k
of window
"Noms.fp5")
end
tell --
à FileMaker
tell
application "QuarkXPress
Passport"
tell
page 1
of document
1
--
Création d'un bloc, à une certaine position
make
text box at
beginning
set
bounds of
text box 1
to {2,
3 *
k,
5, 2
+ 3 *
k}
--
Placement du texte issu de FileMaker pro dans ce bloc
set
contents of
story 1
of text box
1 to
w
end
tell --
à la page
end
tell --
à XPress
end repeat
10.2 Placement de texte dans des blocs XPress, à partir de données des cellules d'une feuille Microsoft Excel
--
Constitution initiale du document XPress
tell
application "QuarkXPress
Passport"
activate
make
document at
beginning
tell
document 1
--
Indication que les mesures seront en cm
set
vertical measure to
centimeters
set
horizontal measure to
centimeters
end
tell
end tell
--
Boucle générale
repeat with
k
from 1
to 5
tell
application "Microsoft Excel"
set
w
to text
of Cell
("L" &
k
& "C1")
end
tell --
à Excel
tell
application "QuarkXPress
Passport"
tell
page 1
of document
1
make
text box at
beginning
set
bounds of
text box 1
to {2,
3 *
k,
5, 2
+ 3 *
k}
set
contents of
story 1
of text box
1 to
w
end
tell --
à la page
end
tell --
à XPress
end repeat
10.3 Utilisation d'AppleScript , et Adobe Illustrator CS2 pour la conversion de formats de toutes les images d'un dossier
set
wIn
to "DisqueDur:In"
set
wOut
to "DisqueDur:Out"
tell application
"Finder"
set
wfic
to files
of folder
wIn
end
tell
repeat with
f
in
wfic
set
w
to
f
as string
set
l
to count
of characters
of
wIn
set
lf
to count
of characters
of
w
set
w
to (characters
(l
+ 2) thru
lf
of
w)
as string
conversion(wIn,
wOut,
w)
end repeat
on
conversion(xfIn,
xfOut,
xdIn)
tell
application "Adobe
Illustrator"
--
Ouverture d'une image EPS (Illustrator)
--
enregistrement en format JPEG 50% de qualité
set
smallscale
to 100
activate me
display dialog
xfIn
& ":" &
xdIn
giving up after 1
activate
open
file (xfIn
& ":" &
xdIn)
end
tell
set
p
to offset
of "."
in
xdIn
set
w
to ((characters
1 thru
p
of
xdIn)
as string)
& "jpg"
tell
application "Adobe
Illustrator"
export document
1 to
file (xfOut
& ":" &
w)
as JPEG
with options ¬
{quality:40,
optimization:false,
blur:0.0,
matte:false
¬
,
horizontal scaling:smallscale,
vertical scaling:smallscale
¬
,
antialiasing:true,
artboard clipping:false,
saving as HTML:false}
close document
1 saving
no
end
tell
end
conversion
10.4 Utilisation d'AppleScript , soit avec Quark XPress, soit avec Adobe InDesign, pour effectuer les mêmes actions
Exemple de création d'un bloc image, occupant l'ensemble de la page, avec un fond perdu, respectivement avec Adobe InDesign CS2 et avec Quark XPress 6.5
Avec Adobe InDesign CS2 :
tell
application "Adobe InDesign
CS2"
try
tell
active document
set
vertical measurement units of
view preferences to
millimeters
set
horizontal measurement units
of view preferences
to millimeters
tell
page 1
set
wT
to item
1 of
bounds
set
wL
to item
2 of
bounds
set
wB
to item
3 of
bounds
set
wr
to item
4 of
bounds
set
MyRect
to make
rectangle with properties
{geometric bounds:{wT
- 10,
wL
- 10,
wB
+ 10,
wr
+ 10}, content type:graphic
type}
end
tell
end
tell
end
try
end tell
Avec Quark XPress 6.5
tell
application "QuarkXPress
Passport"
tell
document 1
set
horizontal measure to
millimeters
set
vertical measure to
millimeters
set
wL
to (page width)
as real
set
wH
to (page height)
as real
make
picture box at
beginning
tell
picture box 1
set
bounds to
{-TailleFP,
-TailleFP,
wH
+ TailleFP,
wL
+ TailleFP}
end
tell
end
tell
end tell
10.5 Utilisation d'AppleScript , et Adobe Illustrator CS2 pour créer de nouveaux objets graphiques, à des positions précises
tell
application "Adobe
Illustrator"
tell
document 1
set
r1
to make
new ellipse
with properties {position:{20,
300}, width:400,
height:50}
set
r2
to make
new rounded rectangle
with properties {position:{20,
150}, width:400,
height:50,
vertical radius:15,
horizontal radius:40}
set
r3
to make
new ellipse
with properties {position:{20,
450}, width:100,
height:100}
end
tell
end tell
10.6 Utilisation d'AppleScript , et Microsoft Word pour créer une structure de syntaxe XML, destinée à ensuite être injectée dans Quark XPress
on
Word_to_XML()
--
Transforme un document Word en texte balisé, style XML
set
wOut
to ""
set
wOut2
to ""
tell
application "Microsoft Word"
--
version Word X pour Mac, Service Release 1
tell
document 1
set
nb
to count
of paragraphs
repeat with
k
from 1
to
nb
set
w
to (contents
of paragraph
k)
as string
set
wN
to (paragraph style
of paragraph
k)
as string
ignoring case
if
wN
= "titre 1" then
set
wOut2
to
wOut2
& "<titre 1>" &
w
& "</titre 1>" & return
end
if
if
wN
= "titre 2" then
set
wOut2
to
wOut2
& "<titre 2>" &
w
& "</titre 2>" & return
end
if
if
wN
= "normal" then
set
wOut
to
wOut
& w
& return
end
if
end
ignoring
end
repeat
end
tell
end
tell
return {wOut,
wOut2}
end
Word_to_XML
11 - Sélection de liens consacrés à Quark XPress et AppleScript
|
http://www.quark.com/service/forums/viewforum.php?f=14 Forum consacré au développement avec AppleScript et Quark XPress. |
http://www.apple.com/applescript/developers/ Sur le site Apple. |
|||
|
http://radio.weblogs.com/0100306/gems/rapide/xpress%20proprietes.pdf Document PDF de 86 pages, en français, détaillant les objets et méthodes Quark XPress/ AppleScript. Sur le blog de Gwenaël Le Drean. |
http://www.index-internet.net/info_quarkxpress_et_applescript.htm Dossier technique et méthodologique. Exemples de programmation AppleScript de Quark XPress avec Microsoft Excel, FileMaker Pro, Adobe Illustrator et Adobe InDesign. |
|||
|
http://bbs.applescript.net/ |
http://rome.dartmouth.edu/Archives/macscrpt.html Archives des discussions, classées par mois, depuis 1999. |
|||
|
http://avenue.quark.com/service/forums/viewtopic.php?t=8654&view=next dans un bloc texte Quark XPress. |
http://bbs.applescript.net/viewtopic.php?pid=47466 Sur le site MacScripter. |
|||
|
http://users.aol.com/nyhthawk/welcome.html Sur le site de Sal Soghoian. |
http://applescript.pratique.online.fr/OlivierThalgott.php Sur le site de Olivier Thalgott. |
|||
|
http://scripteur.com/cormoran/as/osa/appl/gwenael/dico/exemples/transfererimages.html Exemple de scripts. |
http://maccentral.macworld.com/features/applescriptprimer34/ Par Bill Briggs. |
|||
|
http://www.indesignusergroup.com/chapters/chicago/notes/2004/01_15/01_15_notes.php Entre QuarkXPress et Adobe InDesign. Par Eda Warren, Desktop Publishing Services, Inc. |
http://www.tek-tips.com/viewthread.cfm?qid=234311 Depuis Quark XPress, avec AppleScript. |
|||
|
http://www.vtc.com/products/applescript.htm Author: Ben Waldie. Une partie des scripts est en accès gratuit. |
http://www.powermacintosh.de/applescript/quark_scripting/inhalt.html Exemples de base, en allemand. |
|||
|
http://www.kanzu.com/index.html Kanzu software, pour XPress version 3.1 |
http://pro.wanadoo.fr/christian.texier/trucs/html/telechar.htm par Christian Texier. |
|||
|
http://lists.apple.com/archives/applescript-users/2005/Jul/msg00432.html Archive du forum Apple consacré à AppleScript. |
Tous droits réservés, RCI Informatique SAS, 1992-2006
rci@wanadoo.fr
www.rci-informatique.fr