API HTTP
L'impression par modèle prend en charge le déclenchement direct du rendu et du téléchargement de documents via l'API HTTP. Que ce soit pour un bloc Détails ou un bloc Tableau, il s'agit essentiellement de déclencher l'action templatePrint sur la ressource métier courante.
Notes :
<resource_name>est le nom de la ressource correspondant à la collection courante.- L'interface renvoie un flux de fichier binaire, et non des données JSON.
- L'appelant doit disposer des permissions de requête sur la ressource courante, ainsi que des permissions d'utilisation du bouton d'impression par modèle correspondant.
- L'appel d'interface nécessite la transmission d'un jeton JWT basé sur la connexion utilisateur via l'en-tête de requête Authorization, sans quoi l'accès sera refusé.
Paramètres du corps de requête
Bloc Tableau
Le bloc Tableau utilise la même interface, et spécifie le mode d'impression de liste via blockName: "table". Le serveur exécute une requête find sur la ressource et transmet le tableau de résultats au modèle.
Imprimer les enregistrements sélectionnés ou le résultat de la page courante
Adapté pour cocher certains enregistrements dans un bloc Tableau pour les imprimer, ou pour conserver le contexte de pagination courant pour l'impression. La pratique courante consiste à :
- Définir
queryParams.pageetqueryParams.pageSizesur le numéro de page et la taille de page courants du tableau. - Composer les clés primaires des enregistrements cochés en condition
filter.id.$in.
Signification de ce type de requête :
blockNameesttable, ce qui signifie que le modèle est rendu à partir des données de liste.filter.id.$inest utilisé pour spécifier l'ensemble des enregistrements à imprimer.pageetpageSizeconservent le contexte de pagination courant, pour rester cohérent avec le comportement de l'interface.appendspermet d'ajouter au besoin des champs associés.
Imprimer toutes les données correspondantes
Adapté à l'appel effectué lors du clic sur «Imprimer tous les enregistrements» dans un bloc Tableau. Dans ce cas, la pagination courante n'est plus appliquée, et toutes les données correspondant aux conditions de filtrage courantes sont récupérées directement.
Le point clé est de passer explicitement queryParams.page et queryParams.pageSize à null.
Signification de ce type de requête :
page: nulletpageSize: nullindiquent l'annulation de la limite de pagination.filter: {}indique qu'aucune condition de filtrage supplémentaire n'est appliquée ; si l'interface a déjà des conditions de filtrage, vous pouvez aussi les placer ici directement.- Le serveur récupère toutes les données correspondantes et rend le modèle par lots.
Note : un bloc Tableau peut imprimer au maximum 300 enregistrements à la fois. Au-delà de cette limite, l'interface renvoie une erreur
400.
Bloc Détails
Le bloc Détails utilise également l'action templatePrint, mais on lui passe généralement :
blockName: "details"queryParams.filterByTkpour spécifier la clé primaire de l'enregistrement courantqueryParams.appendspour spécifier les champs associés à inclure dans la requête
Le serveur exécute une requête findOne sur la ressource et transmet l'objet résultat au modèle.
Résultat de retour
Lorsque l'appel réussit, l'interface renvoie directement un flux de fichier. Les en-têtes de réponse typiques sont les suivants :
Notes :
- Lorsque
convertedToPDFesttrue, l'extension du fichier renvoyé est.pdf. - Sinon, le fichier renvoyé correspond au type d'origine du modèle, par exemple
.docx,.xlsxou.pptx. - Le frontend déclenche généralement le téléchargement par le navigateur en se basant sur le nom de fichier dans
Content-Disposition.

