Docx-template : Différence entre versions

De YoWiki
Sauter à la navigation Sauter à la recherche
 
(4 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 6 : Ligne 6 :
 
<p>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.</p>
 
<p>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.</p>
 
[[Fichier:Capture d’écran 2020-07-29 à 23.16.58.png|700px|thumb|néant|Fonctionnement schématisé d'injection entre un SmartDoc et son Docx-template]]
 
[[Fichier:Capture d’écran 2020-07-29 à 23.16.58.png|700px|thumb|néant|Fonctionnement schématisé d'injection entre un SmartDoc et son Docx-template]]
<h3 id="debut">Avantage de la fonctionnalité</h3>
+
<h3 id="debut">Intérêt et avantages</h3>
 
<p>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 ...</p>
 
<p>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 ...</p>
 
<p>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 ...</p>
 
<p>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 ...</p>
Ligne 17 : Ligne 17 :
 
<p> Le [[SmartDoc]] doit aussi prévoir, dans ses options, qu'il va bénéficier d'une docx-template.<p>
 
<p> Le [[SmartDoc]] doit aussi prévoir, dans ses options, qu'il va bénéficier d'une docx-template.<p>
 
[[Fichier:Capture d’écran 2020-07-30 à 00.04.31.png|1200px|thumb|néant|Le SmartDoc contrat de travail prévoyant une ligne spécifique dans sa colonne Options pour pouvoir bénéficier d'un docx-template]]
 
[[Fichier:Capture d’écran 2020-07-30 à 00.04.31.png|1200px|thumb|néant|Le SmartDoc contrat de travail prévoyant une ligne spécifique dans sa colonne Options pour pouvoir bénéficier d'un docx-template]]
<h2 id="inject">Principe des injects dans un docx-template</h2>
+
 
<p>'''Intérêt de l'Inject'''</p>
+
== Injecter du contenu dynamique dans un modèle ==
<p>''C'est grâce à l'instruction <code>inject</code>, qui doit directement être placée dans le docx-template, qu'il est possible d'injecter tout ou partie du contenu d'un [[SmartDoc]].''</p>
+
 
<h3 id="injectall">Inject de la totalité d'un SmartDoc dans un docx-template</h3>
+
Le modèle étant au format docx, son contenu est statique.
<p>Il suffit d'écrire <code>{ @inject all }</code> dans le docx-template.</p>
+
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é.
<p>Dans ce cas, le système injecte dans le docx-template la totalité du SmartDoc.</p>
+
 
<p>Le <code>{ @inject all }</code> est donc utile dans les cas où celui qui paramètre souhaite simplement personnaliser les styles, l'aspect du document, établir une page de garde stylisée, etc ...</p>
+
=== La syntaxe de l'injection dynamique dans un modèle ===
<h3 id="injectsimple">Inject d'une partie d'un SmartDoc dans un docx-template</h4>
+
 
<p>Il est aussi possible d'injecter juste certaines parties du SmartDoc dans le docx-template, dans l'ordre souhaité.</p>
+
Les instructions sont toujours sous la forme <code>${ … }</code>. Elles sont de 4 types :
<p>Pour définir une partie de [[SmartDoc]] à injecter, celle-ci doit être délimitée par un [[SmartDoc/Blocs|Bloc]].</p>
+
 
<p>Il suffit ensuite de prévoir une ligne de ce type dans le docx-template : <code> { @inject NOM_DU_BLOC } </code>.</p>
+
:: — une simple injection de variable (variable du Datastore ou même [[Dynvars|variable Dynamique]]). Ex : <code>${ PRENOM }</code>.
 +
:: 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>.
 +
:: 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>.
 +
:: 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]].
 +
 
 +
 
 +
=== 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 <code>.docx</code>.
 +
 
 +
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" …

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" …