API JavaScript pour générer des documents Word dynamiques
Bibliothèque JavaScript open source pour créer des documents Word dynamiques avec Node.js et des applications basées sur le navigateur.
Qu'est-ce que Docx-templates ?
Docx-Templates est une bibliothèque JavaScript open-source qui permet aux développeurs de logiciels de générer des documents Microsoft Word (.docx) dynamiques à l'aide de modèles prédéfinis. Au lieu de créer manuellement des documents Word de manière programmatique, les développeurs peuvent concevoir des modèles dans Microsoft Word et injecter des données dynamiques à l'aide de commandes intégrées. Cette bibliothèque fonctionne à la fois dans les environnements Node.js et navigateur, ce qui la rend très polyvalente pour les applications web modernes et côté serveur. Elle traite les fichiers DOCX en analysant leur structure XML interne et en remplaçant les commandes de modèle par les données réelles lors de l'exécution.
La bibliothèque Docx-Templates est un outil puissant et open-source conçu à la fois pour les environnements Node.js et navigateur. L'avantage principal de la bibliothèque est la séparation du design et de la logique. Les utilisateurs non techniques peuvent concevoir la mise en page et le style dans Word, tandis que les développeurs se concentrent sur l'injection des données. Elle prend en charge une logique complexe comme les boucles, le formatage conditionnel, et même l'exécution de fragments JavaScript directement dans le document. Cela en fait une solution idéale pour les développeurs qui doivent produire des rapports haute fidélité sans se battre avec le XML ou des outils de conception propriétaires.
Premiers pas avec Docx-templates
La façon recommandée d'installer la bibliothèque Docx-templates est via npm. Veuillez utiliser la commande suivante pour une installation fluide.
Installer Docx-Templates via NPM
$ npm install docx-templates Installer Docx-Templates via Yarn/strong>
$ yarn add docx-templates Génération de documents basée sur des modèles via l'API JS
La bibliothèque open source Docx-Templates permet aux développeurs de logiciels de concevoir des documents Word et d’injecter des données dynamiquement à l’aide de commandes simples. Cette approche sépare la présentation de la logique, rendant les modèles faciles à gérer et à mettre à jour sans modifier le code. Vous pouvez accéder directement aux propriétés de votre objet de données ou même exécuter de simples expressions. Par exemple, pour insérer un nom complet, votre modèle ressemblerait à ceci : {firstName} {surname}. La bibliothèque évalue le code et le remplace de manière transparente.
Comment créer dynamiquement des documents Word dans les applications JavaScript ?
import createReport from 'docx-templates';
import fs from 'fs';
const template = fs.readFileSync('template.docx');
const report = await createReport({
template,
data: { name: 'John', surname: 'Doe' },
});
fs.writeFileSync('output.docx', report);
Injection dynamique d'images via JavaScript
Au-delà du texte, la bibliothèque open source Docx-Templates peut injecter des images à la volée. Cela inclut les fichiers locaux, les images provenant d’une URL ou même les QR codes générés programmatiquement. Vous pouvez contrôler la taille de l’image et son positionnement. Cette fonctionnalité est révolutionnaire pour créer des badges d’identification, des catalogues de produits ou des rapports nécessitant des graphiques dynamiques et des preuves visuelles. Voici un exemple simple qui montre comment insérer une image dans un document Word via l’API JavaScript.
Comment insérer une image à la volée dans les documents Word via l'API JavaScript ?
const buffer = await createReport({
template,
data: {
userAvatar: async () => {
const resp = await fetch('https://example.com/photo.png');
return { width: 3, height: 3, data: await resp.arrayBuffer(), extension: '.png' };
}
},
});
// In Word: {IMAGE userAvatar()}
Boucles puissantes (FOR/END-FOR)
La gestion des listes de données est fluide avec la commande FOR. Cette fonctionnalité vous permet d'itérer sur des tableaux pour générer des lignes de tableau, des listes ou même des sections entières d'un document. La bibliothèque Docx-Templates inclut la prise en charge des boucles imbriquées, vous permettant de représenter des structures de données hiérarchiques complexes, comme une liste de départements avec leurs employés respectifs, tout en conservant le style Word d'origine. L'exemple de code suivant montre comment y parvenir.
Comment appliquer une boucle avancée dans les applications JavaScript ?
const buffer = await createReport({
template,
data: {
projects: [
{ name: 'SEO Optimization', status: 'Completed' },
{ name: 'API Integration', status: 'In Progress' }
]
},
});
/* In Word:
{FOR project IN projects}
Project: {project.name} - Status: {project.status}
{END-FOR}
*/
Contexte JavaScript personnalisé (EXEC)
L'une des fonctionnalités les plus avancées de la bibliothèque Docx-Templates est la capacité d'exécuter des extraits JavaScript arbitraires à l'aide de la commande EXEC (ou !). En fournissant un additionalJsContext, vous pouvez exposer des fonctions d'aide personnalisées au modèle. Cela permet au modèle d'effectuer des calculs, de formater des dates ou de manipuler des chaînes en interne sans avoir besoin de prétraiter chaque donnée dans la logique principale de votre application.