Docx-template : Différence entre versions

De YoWiki
Sauter à la navigation Sauter à la recherche
 
Ligne 30 : Ligne 30 :
 
:: Cette méthode d'injection est simpliste, la valeur de la variable sera injectée telle quelle, puisqu'on est dans le docx, il n'est pas possible d'appliquer des traitements à ce niveau.  
 
:: Cette méthode d'injection est simpliste, la valeur de la variable sera injectée telle quelle, puisqu'on est dans le docx, il n'est pas possible d'appliquer des traitements à ce niveau.  
  
:: — l'injection de l'ensemble du contenu dynamique du [[SmartDoc]]) : <code>${ inject all }</code>.  
+
:: — l'injection de l'ensemble du contenu dynamique du [[SmartDoc]]) : <code>${ @inject all }</code>.  
 
:: Le contenu dynamique injecté prendra en compte les niveaux de titres, leur numérotation, et les styles configurés dans le . (voir [[Docx-template#Les styles dans le modèle docx| la rubrique sur les Styles]] ci-dessous).
 
:: Le contenu dynamique injecté prendra en compte les niveaux de titres, leur numérotation, et les styles configurés dans le . (voir [[Docx-template#Les styles dans le modèle docx| la rubrique sur les Styles]] ci-dessous).
  
:: — l'injection d'un [[SmartDoc/Blocs|bloc]] spécifique du [[SmartDoc]]) : <code>${ inject id-du-bloc }</code>.  
+
:: — l'injection d'un [[SmartDoc/Blocs|bloc]] spécifique du [[SmartDoc]]) : <code>${ @inject id-du-bloc }</code>.  
:: Si le bloc ciblé doit provenir d'une autre document que celui qui est en train d'être généré, alors il faudra préciser l'identifiant de cet autre document avec la syntaxe suivante : <code>${ inject id-du-doc:id-du-bloc }</code>.  
+
:: Si le bloc ciblé doit provenir d'une autre document que celui qui est en train d'être généré, alors il faudra préciser l'identifiant de cet autre document avec la syntaxe suivante : <code>${ inject @id-du-doc:id-du-bloc }</code>.  
  
 
:: — l'injection d'une métadonnée du [[SmartDoc]], telle que son titre : <code>${ @doctitle }</code>. Le titre d'un document est celui qui est configuré dans la [[DocList]].
 
:: — l'injection d'une métadonnée du [[SmartDoc]], telle que son titre : <code>${ @doctitle }</code>. Le titre d'un document est celui qui est configuré dans la [[DocList]].

Version actuelle datée du 6 octobre 2022 à 07:44

Docx-template

Introduction

Principe

Un docx-template constitue la base Word d'un SmartDoc.

Tout Smartdoc, avant de devenir un fichier Word (docx), est d'abord traité en HTML par le système puis injecté dans un docx-template.

Si aucun docx-template n'est spécifié dans le paramétrage du SmartDoc, le système crée automatiquement un docx-template dans lequel il injecte la totalité du SmartDoc.

Fonctionnement schématisé d'injection entre un SmartDoc et son Docx-template

Intérêt et avantages

L'avantage principal lié au fait de préciser un Docx-template dans le paramétrage est de pouvoir personnaliser totalement le fichier Docx qui fera office de docx-template : styles des titres, interlignes, pied de page, en-tête, filigrane, page de garde stylisé, etc ...

Le second avantage, de manière générale, est de pouvoir profiter de toutes les fonctionnalités les plus avancées de Word : tableaux, retraits, etc ...

Enfin, à l'instar des SmartDocX, les docx-template peuvent aussi accueillir directement des variables, inscrites de la manière suivante : ${MA_VARIABLE}

Mise en place d'un docx-template dans le fichier de paramétrage

Paramétrage dans la DocList

La DocList doit prévoir le fait que le SmartDoc correspondant va bénéficier d'un docxtemplate.

Une DocList prévue pour que le SmartDoc contrat de travail se base sur un docx-template

Paramétrage dans le SmartDoc concerné

Le SmartDoc doit aussi prévoir, dans ses options, qu'il va bénéficier d'une docx-template.

Le SmartDoc contrat de travail prévoyant une ligne spécifique dans sa colonne Options pour pouvoir bénéficier d'un docx-template

Injecter du contenu dynamique dans un modèle

Le modèle étant au format docx, son contenu est statique. Lors de la génération d'un Document, si un modèle docx est précisé, alors le contenu dynamique va pouvoir y être intégré.

La syntaxe de l'injection dynamique dans un modèle

Les instructions sont toujours sous la forme ${ … }. Elles sont de 4 types :

— une simple injection de variable (variable du Datastore ou même variable Dynamique). Ex : ${ PRENOM }.
Cette méthode d'injection est simpliste, la valeur de la variable sera injectée telle quelle, puisqu'on est dans le docx, il n'est pas possible d'appliquer des traitements à ce niveau.
— l'injection de l'ensemble du contenu dynamique du SmartDoc) : ${ @inject all }.
Le contenu dynamique injecté prendra en compte les niveaux de titres, leur numérotation, et les styles configurés dans le . (voir la rubrique sur les Styles ci-dessous).
— l'injection d'un bloc spécifique du SmartDoc) : ${ @inject id-du-bloc }.
Si le bloc ciblé doit provenir d'une autre document que celui qui est en train d'être généré, alors il faudra préciser l'identifiant de cet autre document avec la syntaxe suivante : ${ inject @id-du-doc:id-du-bloc }.
— l'injection d'une métadonnée du SmartDoc, telle que son titre : ${ @doctitle }. Le titre d'un document est celui qui est configuré dans la DocList.


Les styles dans le modèle docx

Pour bien personnaliser les styles des modèles, il est important de bien maîtriser son logiciel de traitement de texte et de toujours bien sauvegarder le modèle au format .docx.

Le style par défaut appliqué aux paragraphes injectés est généralement nommé "Normal" chez Microsoft Word ou LibreOffice. En modifiant la couleur, la taille (ou tout autre propriété) de ce Style dans le fichier de modèle, alors le contenu injecté utilisera automatiquement la mise en forme choisie dans le document généré.

Les styles qui seront appliqués sur les titres du document sont des styles de titre proposés par défaut dans la norme .docx. Sous Microsoft Word, ils sont nommés "Titre 1", "Titre 2" etc. , mais dans la version Anglaise du logiciel, ils seront nommés "Header 1", "Header 2" …