wiki:docs/j2slayouttoolbox/manuel

Références J2S LayoutToolbox

Actions

Placer du texte

Pour fabriquer un bloc de texte

Cette action permet de placer un bloc en provenance de la maquette Adobe InDesign ; une fois le bloc placé, du texte y est importé.

En plus du tag du bloc Adobe InDesign, l’utilisateur spécifie le chemin XML contenant le texte qui sera importé dans le bloc après que celui-ci aura été placé.

Pour placer un champ de texte

Au lieu de remplacer la totalité du contenu d’un bloc texte, il est possible d’insérer un champ dans une zone de texte ; c’est le rôle de cette action.

Pour répéter dans une zone de texte

Cette action permet de répéter une zone de texte (par exemple la liste des textes de sécurité d’une étiquette).

Il faut spécifier sur quoi il faut boucler (voir plus loin le chapitre concernant les répétitions).

Enfin, on précise, dans le document InDesign, le tag de la zone de texte où placer le résultat.

On précise, dans le document InDesign, le tag du bloc texte contenant le modèle à utiliser.

Lors de chaque itération de la boucle, le contenu du modèle sera généré puis placé dans la zone de texte de résultat. Avec les données :

On obtient :

Pour rendre optionnel du texte dans la maquette

Cette action permet de cacher du texte présent dans le modèle Adobe InDesign en fonction d’une condition.

Un tag doit être affecté à la zone de texte en question. Quand l’évaluation de la propriété « Exécuter si ? » renverra 0, le texte marqué avec le tag sera supprimé.

Placer un tableau

Pour placer un tableau

Cette action permet de placer un tableau dans le bloc de texte créé par une action précédente.

Le tableau à placer est spécifié grâce à son tag.

Pour placer une rangée de tableau

Cette action sert à insérer une rangée dans un tableau créé précédemment.

La rangée à placer est spécifiée grâce à son tag.

Placer une cellule de tableau

Cette action sert à insérer une cellule dans une rangée de tableau créée précédemment.

La cellule à placer est spécifiée grâce à son tag.

Pour répéter des rangées dans un tableau

Cette action permet de répéter une rangée de tableau. Le fonctionnement est identifique à la répétition dans un bloc de texte. Il faut spécifier sur quoi il faut boucler (des données par exemple).

Les tags de la première et de la dernière ligne à utiliser. À chaque répétition, toutes les lignes entre ces deux lignes seront recopiées.

Pour rendre une colonne de tableau optionnelle

Cette action permet de cacher une colonne de tableau présente dans le modèle Adobe InDesign en fonction d’une condition.

Elle fonctionne comme l’action permettant de rendre du texte optionnel.

Placer des blocs

Pour fabriquer un bloc d’image

Cette action permet de placer un bloc en provenance de la maquette Adobe InDesign ; une fois le bloc placé, un fichier y est importé (par exemple, une image).

En plus du tag du bloc Adobe InDesign, l’utilisateur spécifie le chemin XML contenant le chemin d’accès à un fichier image qui sera importé dans le bloc après que celui-ci aura été placé.

Pour importer un bloc de la maquette

Cette action permet d’importer un bloc en provenance de la maquette Adobe InDesign sans placer de données XML. Cette action est utile quand on souhaite placer un logo présent dans le modèle Adobe InDesign par exemple.

Pour répéter des blocs

Cette action permet de répéter les blocs générés par les actions filles (voir plus loin le chapitre concernant les répétitions).

Pour créer une zone de placement

Cette action est utile lorsque l’on fabrique un module de page.

Elle permet de définir une zone dans laquelle sera placé un enregistrement mis en page à l’aide d’un module de fiche.

Organiser des blocs dans un conteneur

Pour aligner horizontalement ou verticalement des blocs

Ces actions vont permettre d’aligner les blocs générés par les actions filles.

Pour aligner des blocs sur une grille

Au lieu d’aligner les blocs générés par les actions filles sur une seule ligne, ils seront alignés sur une grille dont on spécifie le nombre de lignes et de colonnes.

Pour ne pas aligner les blocs

Ce type d’action est employé lorsque l’on veut regrouper plusieurs blocs en conservant la même organisation que dans le fichier Adobe InDesign. Ce sera le cas par exemple avec une adresse où on positionnera le code postal, la ville, etc.

On pourra éventuellement paramétrer le positionnement des blocs créés par les actions filles de manière à les agrandir en fonction du bloc parent ; il serait logique de considérer que la zone code postal a toujours la même taille, mais que la zone ville peut s’agrandir en largeur en fonction de la place disponible.

Autres actions

Pour placer un sous-module

Cette action permet de placer le résultat de l’exécution d’un module externe. Il faut spécifier le nom de ce module et le chemin d’accès au fichier Adobe InDesign le stockant s’il ne s’agit pas du même.

Appeler un script

Cette action permet d’exécuter un script JavaScript? Adobe InDesign. On peut désigner le chemin d’accès au script avec un chemin relatif au module, par exemple : ./script.jsx.

Voir plus loin les scripts disponibles en standard.

Comprendre la structure de données =

Structure du fichier de données XML en mode fiche

Pour être utilisé par J2S LayoutToolbox?, lorsque l’on exécute un module de fiche, le fichier XML contenant les données doit être structuré de manière spécifique pour savoir dans quelle langue sont les données et à quel produit ces données sont associées.

Le fichier peut donc contenir plusieurs versions dans plusieurs langues de plusieurs produits.

Exemple :

<?xml version="1.0" encoding="UTF-8" ?>
<DataBase>
	<Product id="cat1">
		<Fields language="Fr">
			<numero>5</numero>
			<nom>Piscine</nom>
			<actif>0</actif>
		</Fields>
	</Product>
</DataBase>

Ce fichier de données contient les données du produit nommé « cat1 » en langue française.

Structure du fichier de données XML en mode page

Pour être utilisé par J2S LayoutToolbox?, lorsque l’on exécute un module de page, le fichier XML contenant les données doit être structuré de manière spécifique. Le fichier contient les informations nécessaires à la fabrication du fond de page et l’ensemble des enregistrements à placer dans les zones de placement.

Exemple :

<?xml version="1.0" encoding="utf-8"?>
<DataBase>
  <Section>

    <!-- Champ utilisé par le module de page -->
    <Numero>35</Numero>
  
    <!-- Données du premier enregistrement qui sera placé dans la première zone de placement -->
    <Product id="#1">
		 	</Product>   

    <!-- Données du second enregistrement qui sera placé dans la seconde zone de placement -->
    <Product id="#2">
		 	</Product>

    …
 </Section> 
</DataBase> 

La propriété chemin XML

J2S LayoutToolbox? utilise un chemin XML en cours pour accéder aux données XML. Lors de l’exécution de la première action, ce chemin est fixé à la racine de l’enregistrement en cours de traitement. Dans notre exemple, la racine sera fixée au nœud « <Fields language="Fr"> ».

Quand on spécifie un nom simple (« numero » par exemple), J2S LayoutToolbox? se base sur le chemin XML en cours pour savoir où retrouver cette propriété dans le fichier XML. Le nœud « numero » situé au niveau du chemin XML en cours sera extrait (donc ici « Fields/numero »).

Chaque fois qu’un chemin XML est spécifié au niveau d’une propriété, le chemin XML en cours prend cette valeur. Toutes les actions filles utiliseront ce chemin XML relatif à cette position. Ainsi, quand on précise un chemin XML au niveau d’un répéteur, le chemin XML en cours sera automatiquement placé sur le bon enregistrement (voir exemple du curseur plus haut).

Plutôt que d’utiliser un chemin fonction du chemin XML relatif, il est possible de spécifier un chemin absolu à l’enregistrement en faisant commencer le chemin par le caractère « $ ».

Enfin, on peut spécifier un chemin absolu aux données avec le caractère « / ».

Les répétitions

Il est possible de boucler :

  • Sur un champ de données ; auquel cas, il faut indiquer son chemin XML.
  • Sur les langues disponibles : lors de la génération, il est indiqué à J2S LayoutToolbox? dans quelles langues il faut générer ; la boucle sera effectuée sur ces langues.
  • Sur des valeurs : on spécifie la première et la dernière valeur sur lesquelles boucler.

La propriété « Exécuter si ? »

Cette propriété doit contenir du code JavaScript? renvoyant la valeur 1 ou 0. Si la valeur 1 est renvoyée par ce code, l’action sera exécutée. Sinon, elle ne le sera pas.

Des variables spécifiques à J2S LayoutToolbox? sont disponibles pour écrire ce code :

« ctDataPath »

Chaine indiquant le chemin d'accès aux données placées dans le bloc ou la zone de texte courants.

Par exemple, dans le cas de la fabrication d’un bloc de texte, « ctdataPath » contiendra la propriété « Chemin de la base de données ».

« ctLanguage »

Dans le cas d’un répéteur itérant sur les langues pour lesquelles doit être fabriqué un module, cette variable contient la langue en cours.

« dbLanguages »

Cet objet permet d’accéder aux langues pour lesquelles doit être fabriqué le module comme suit :

  • « dbLanguages.count » permet d’avoir le nombre (int).
  • « dbLanguages[index] » permet d’extraire la nième langue (string). On accède à la première langue en utilisant l’index zéro.

Dans le cas d’une action « Répéter dans une zone de texte »

  • « trIndex » indique l’index du répéteur de texte courant (ce champ contiendra -1 si on ne se trouve pas dans le contexte d’un répéteur).
  • « trMin » indique le plus petit indice du répéteur courant.
  • « trMax » indique le plus grand indice du répéteur courant.

Dans le cas d’une action « Répéter des blocs »

  • brMin indique le plus petit indice du répéteur courant.
  • brMax indique le plus grand indice du répéteur courant.
  • brIndex indique l’index du répéteur de texte courant (ce champ contiendra -1 si on ne se trouve pas dans le contexte d’un répéteur).

Des fonctions spécifiques à J2S LayoutToolbox? sont disponibles pour écrire ce code :

  • FieldExists?(bddPath) (ou FieldExist?) : bool indiquant l’existence du champ.
  • FieldCount?(bddPath) : int correspondant au nombre d’occurrences de ce champ.
  • FieldValue?(bddPath) : string correspondant à la valeur du champ.

Exemples

  • L’image ne sera exécutée que si le champ npanneaux de la base de données contient la valeur 1.
    <pictBox dbid="panneau1" piid="panneau11" visibleIf="FieldValue('npanneaux') == 1"></pictBox>
    
  • Cette zone de texte ne sera conservée que si nous ne sommes pas en train de générer le dernier poste.
    <textControl tagid="nomdubeneficecr" visibleIf="trIndex != trMax"/>
    
  • Permet d’exécuter un sous-module en fonction de la place restante.
    <canvas piid="containerbottom" height="=">
    
    <subTemplate templatePath="./sousmodules/bottom1/bottom1.indd" deferred="1" templateName="gabarit1" visibleIf="ctHeight > 27.581" x="0" y="0" width="100%" height="100%"/>
    
    <subTemplate templatePath="./sousmodules/bottom2/bottom2.indd" deferred="1" templateName="gabarit1" visibleIf="ctHeight &gt; 16.3 &amp;&amp; ctHeight &lt;= 27.581" x="0" y="0" width="100%" height="100%"/>
    
    </canvas>
    
    

Définir la dimension d’un bloc (propriétés Largeur et Hauteur)

Toutes les dimensions s’expriment en millimètres. ==

Quatre méthodes permettent de spécifier des dimensions :

  • Absolue : par exemple, on spécifie la valeur 10,5 mm avec width=”10.5”.
  • Pourcentage : on spécifie une valeur relative au parent. Par exemple, height=”50%” indiquera une hauteur égale à 50% celle du parent. La dimension dépend uniquement du parent et pas du module original.
  • Relative au module original : avec width=”T”, la largeur du bloc dans le module sera utilisée même si la taille du parent varie ; avec width=”T%”, le ratio généré par rapport au parent sera le même que dans le module (si dans le module, le bloc occupe 25% de la taille du parent, il sera généré avec une taille de 25% de celle du parent généré) ; avec width=”T#”, la différence avec le parent dans le module sera aussi employée lors de la génération.
  • Relative au document en cours : cela fonctionne de la même façon que quand la dimension est relative au module ; il suffit d'employer la lettre D plutôt que la lettre T.

Par défaut : la dimension par défaut définie par un parent est employée ; si aucune valeur n’a été spécifiée, la dimension du bloc dans le module est employée.

Dans les hBox, vBox, on peut dire qu’on veut profiter de la place restante en mettant width=“=”. À la fin du calcul des tailles dans le sens de la box, la place restante sera partagée entre toutes les boxes ayant l’attribut à cette valeur.

Définir la position d’un bloc (propriétés x et y)

Toutes les positions s’expriment en millimètres. Pour définir une position, il faut indiquer deux références, quelle partie du container doit être placée et par rapport à quelle partie du père. On pourra ainsi placer le milieu du container sur le bord droit du père.

La position s’écrit sous la forme de deux références séparées par le caractère « / ». Par exemple « M/R ».

Par défaut, c’est le bord gauche (ou haut) qui est employé. Si une seule valeur est précisée, il s’agit de la référence du père qui indique où placer le premier bord du container. Si aucune valeur n’est spécifiée, la valeur par défaut définie par le parent est employée ; si cette valeur n’est pas spécifiée, l’écart existant dans le module est employé.

Une référence s’écrit sous la forme « [Valeur][Origine] ». La valeur peut s’exprimer sous la forme d’un pourcentage (avec le caractère « % »). L’origine peut prendre les valeurs « R » pour le dernier bord ou « M » pour le milieu (ne rien spécifier pour le premier bord). Par exemple « 2M » pour faire référence au point situé à 2 mm du milieu.

Si une des deux références contient la lettre « T » ou « D », la position appliquée sera la même que celle présente dans le document en cours de génération « D » ou dans le module « T ». Par défaut, il s’agira du même écart. Avec le caractère « % », on indique que l’on applique le même ratio.

En résumé, deux méthodes permettent de spécifier des positions :

Méthode Exemple Commentaire
Absolue M/R Le premier bord du container est plaqué sur le dernier bord de son parent.
Absolue /-10R Le premier bord du container est plaqué sur le point situé à 10 mm à droite du dernier bord du parent. Quand on spécifie une valeur relative au bord droit, le sens est inversé.
Absolue /50M Le premier bord du container est plaqué sur le point situé à 50 mm à droite du milieu du parent.
Absolue /33%M Le premier bord sera situé à 33% de la taille du parent à droite du milieu. Si le parent mesure 210 mm, le premier bord sera à 210*33%+210/2 soit 174,3 mm.
Relative R/TR Applique le même écart que celui qui existe entre les deux bords droits du module.
Relative T%/M Applique le même ratio que celui qui existe entre le premier bord du container et le milieu dans le module.
Relative T% Applique le même ratio existant dans le module entre les bords gauches.

Scripts prédéfinis

Quand on crée une action de type « Appeler un script », un certain nombre de scripts prédéfinis sont proposés.

Traitement d’un groupe de blocs ($/id/collect.jsx)

Ce script permet d’appliquer à plusieurs blocs un traitement. Deux traitements sont disponibles :

  • Homogénéiser le corps de plusieurs blocs de texte.
  • Fabriquer une table.

Cette fonction fonctionne en trois temps :

  • Initialisation.
  • Collecte des blocs à traiter.
  • Traitement.

C’est toujours le même script qui est appelé ($/id/collect.jsx ) mais avec un paramètre indiquant l’opération à effectuer (paramètre « action »). Une des premières actions du module doit être d’appeler le script d’initialisation.

  • Le paramètre « action » contient « init ».
  • Le paramètre « groupname » permet d’indiquer le nom du groupe sous lequel seront collectés les blocs. C’est ce groupe qui sera initialisé.

Après le placement de chaque bloc à traiter, il faut appeler le script qui mémorisera ce bloc.

  • Le paramètre « action » contient « collect ».
  • Le paramètre « groupname » permet d’indiquer le nom du groupe dans lequel collecter l’objet venant d’être créé.

Enfin, quand tous les blocs à traiter ont été placés, on peut appeler le script effectuant le traitement.

  • Le paramètre « action » contient « do ».
  • Le paramètre « groupname » permet d’indiquer le nom du groupe contenant les objets à traiter. Enfin, le paramètre « request » définit l’opération à mener. Dans l’exemple suivant, il s’agit d’uniformiser des blocs de texte, voir plus loin.

Uniformer le corps de plusieurs blocs de texte ($/id/collect.jsx)

Ce traitement permet d’uniformiser les caractéristiques des caractères de plusieurs blocs de texte. Par exemple, le corps le plus petit sera appliqué à tous les blocs.

  • Le paramètre « action » contient « do ».
  • Le paramètre « request » contient « samefontsize ».
  • Le paramètre « groupname » définit le nom du groupe ayant servi à collecter les blocs à traiter (par défaut « 1 »).

Trois scripts prédéfinis sont proposés pour placer simplement les trois actions nécessaires :

  • Initialisation.
  • Collecte.
  • Homogénéisation.

Fabriquer un tableau ($/id/collect.jsx)

Cet ensemble de scripts permet de fabriquer des tables Adobe InDesign.

La fabrication d’un tableau s’opère en quatre étapes :

  • Initialiser.
  • Mémoriser le nouveau bloc de texte.
  • Mémoriser le bloc de texte contenant le modèle de tableau.
  • Recopier les blocs mémorisés dans le tableau.

Initialiser

Ce script doit être appelé une seule fois au début de la fabrication du module.

Mémoriser le nouveau bloc de texte

Un tableau est décomposé en lignes.

Chaque ligne comporte autant de cellules que de colonnes.

Les données de chaque cellule doivent être fabriquées dans des blocs de texte avec une action « Mémoriser le nouveau bloc de texte ». Ces blocs doivent être collectés colonne par colonne puis ligne par ligne.

Pour collecter un tel bloc, il faut associer à l’action « Fabriquer un bloc de texte » le script « Mémoriser le nouveau bloc de texte ».

Mémoriser le bloc de texte contenant le modèle de tableau

La table qui doit être remplie doit se trouver dans un bloc de texte fabriqué par une action « Fabriquer un bloc de texte » à laquelle le script « Mémoriser le bloc de texte contenant le modèle de tableau » est associé.

Cette table sert de modèle. La table ne doit contenir qu’une seule ligne, ligne qui sera supprimée. Le nombre de colonnes de cette ligne détermine le nombre de colonnes que contient le tableau.

Recopier les blocs mémorisés dans le tableau.

C’est cette action qui fabrique le tableau. Tous les blocs collectés sont recopiés dans les cellules du tableau servant de modèle dans l’ordre où elles ont été collectées. Quand le nombre de colonnes est atteint, une nouvelle ligne est créée. Colonne par colonne, les cellules contenant les mêmes données sont fusionnées.

Changer la valeur d’une nuance ($/id/setswatchvalue.jsx)

Ce script permet de modifier les valeurs d’une nuance. Ce script utilise deux paramètres :

  • « swatchname » qui doit contenir le nom de la nuance à modifier.
  • « colorvalue » doit contenir la valeur à utiliser. Il est possible de spécifier cette valeur suivant trois méthodes :
    • RGB(255,100,0) : les composantes RVB avec des valeurs de 0 à 255.
    • CMYK(10,100,0,0) : les composantes CMJN avec quatre pourcentages.
    • PANTONE(PANTONE Yellow C) : le nom d’une couleur pantone.
  • On peut aussi utiliser le contenu d’un champ de la base de données :

Fabriquer un code-barre ($/id/codebarre.jsx)

Ce script remplace le bloc de texte venant d’être créé par un code-barre. Ce bloc de texte doit contenir les 13 chiffres qui seront employés pour construire le code-barre.

Déplacer au premier plan ($/id/send2back.jsx)

Ce script déplace le bloc venant d’être créé au fond de la page.

Ajuster un bloc de texte à son contenu même verticalement ($/id/fittextframetocontent.jsx)

Quand la fonction standard retaillant un bloc en fonction de son contenu n’est pas adaptée, ce script peut être employé. Il permet de pallier une limitation d’Adobe InDesign qui n’ajuste pas la largeur des blocs de texte.

Last modified 17 months ago Last modified on Jul 1, 2016 4:32:03 PM

Attachments (17)

Download all attachments as: .zip