JavaScript API om dynamische Word-documenten te genereren
Open source JavaScript-bibliotheek voor het maken van dynamische Word-documenten met Node.js en browsergebaseerde toepassingen.
Wat is Docx-templates?
Docx-Templates is een open-source JavaScript-bibliotheek die softwareontwikkelaars in staat stelt dynamische Microsoft Word (.docx) documenten te genereren met behulp van vooraf gedefinieerde sjablonen. In plaats van handmatig Word-documenten programmatisch te bouwen, kunnen ontwikkelaars sjablonen ontwerpen in Microsoft Word en dynamische gegevens injecteren via ingebedde commando's. Deze bibliotheek werkt zowel in Node.js- als browseromgevingen, waardoor hij zeer veelzijdig is voor moderne web- en server-side toepassingen. Hij verwerkt DOCX-bestanden door hun interne XML-structuur te parseren en sjablooncommando's te vervangen door daadwerkelijke gegevens tijdens runtime.
De Docx-Templates bibliotheek is een krachtig, open-source hulpmiddel ontworpen voor zowel Node.js- als browseromgevingen. Het belangrijkste voordeel van de bibliotheek is de scheiding van ontwerp en logica. Niet‑technische gebruikers kunnen de lay-out en styling in Word ontwerpen, terwijl ontwikkelaars zich richten op het injecteren van de gegevens. Het ondersteunt complexe logica zoals lussen, voorwaardelijke opmaak, en zelfs het uitvoeren van JavaScript‑fragmenten direct binnen het document. Dit maakt het een ideale oplossing voor ontwikkelaars die hoge‑fidelity rapporten moeten produceren zonder te worstelen met XML of propriëtaire ontwerptools.
Aan de slag met Docx-templates
De aanbevolen manier om de Docx-templates bibliotheek te installeren is via npm. Gebruik alstublieft het volgende commando voor een soepele installatie
Installeer Docx-Templates via NPM
$ npm install docx-templates Installeer Docx-Templates via Yarn/strong>
$ yarn add docx-templates Sjabloongebaseerde documentgeneratie via JS API
De open source Docx-Templates bibliotheek stelt softwareontwikkelaars in staat om documenten in Word te ontwerpen en gegevens dynamisch in te voegen met eenvoudige commando's. Deze aanpak scheidt presentatie van logica, waardoor sjablonen gemakkelijk te beheren en bij te werken zijn zonder code te wijzigen. Je kunt rechtstreeks eigenschappen uit je data‑object benaderen of zelfs eenvoudige expressies uitvoeren. Bijvoorbeeld, om een volledige naam in te voegen, zou je sjabloon er zo uitzien: {firstName} {surname}. De bibliotheek evalueert de code en vervangt deze naadloos.
Hoe maak je dynamisch Word-documenten binnen JavaScript-apps?
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);
Dynamische afbeeldinginjectie via JavaScript
Naast tekst kan de open source Docx-Templates bibliotheek afbeeldingen direct invoegen. Dit omvat lokale bestanden, afbeeldingen van een URL, of zelfs programmeerbaar gegenereerde QR-codes. Je kunt de grootte van de afbeelding en de plaatsing ervan regelen. Deze functie is een doorbraak voor het maken van identificatiebadges, productcatalogi of rapporten die dynamische grafieken en visueel bewijs vereisen. Hier is een eenvoudig voorbeeld dat laat zien hoe je een afbeelding in een Word‑document invoegt via de JavaScript‑API.
Hoe voeg je een afbeelding direct toe in Word-documenten via de JavaScript-API?
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()}
Krachtige lussen (FOR/END-FOR)
Het verwerken van lijsten met gegevens verloopt naadloos met het FOR-commando. Deze functie stelt je in staat om over arrays te itereren om tabelrijen, lijsten of zelfs volledige secties van een document te genereren. De Docx-Templates-bibliotheek bevat ondersteuning voor geneste lussen, waardoor je complexe hiërarchische datastructuren kunt weergeven, zoals een lijst van afdelingen met hun respectieve medewerkers, terwijl je de oorspronkelijke Word-opmaak behoudt. Het onderstaande codevoorbeeld laat zien hoe je dit kunt bereiken.
Hoe pas je geavanceerde lussen toe binnen JavaScript-apps?
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}
*/
Aangepaste JavaScript-context (EXEC)
Een van de meest geavanceerde functies van de Docx-Templates-bibliotheek is de mogelijkheid om willekeurige JavaScript-fragmenten uit te voeren met behulp van het EXEC (of !) commando. Door een additionalJsContext te leveren, kun je aangepaste hulpfuncties beschikbaar maken voor de template. Hierdoor kan de template intern berekeningen uitvoeren, datums opmaken of strings manipuleren zonder dat je elke gegevensstroom vooraf moet verwerken in je hoofdapplicatielogica.