API JavaScript pentru a genera documente Word dinamice
Bibliotecă JavaScript open source pentru crearea de documente Word dinamice cu Node.js și aplicații bazate pe browser.
Ce este Docx-templates?
Docx-Templates este o bibliotecă JavaScript open-source care permite dezvoltatorilor de software să genereze documente dinamice Microsoft Word (.docx) utilizând șabloane predefinite. În loc să construiască manual documente Word programatic, dezvoltatorii pot proiecta șabloane în Microsoft Word și să injecteze date dinamice folosind comenzi încorporate. Această bibliotecă funcționează atât în mediul Node.js, cât și în browsere, fiind foarte versatilă pentru aplicații web moderne și de server. Procesează fișiere DOCX prin parsarea structurii lor interne XML și înlocuirea comenzilor de șablon cu date reale în timpul execuției.
Biblioteca Docx-Templates este un instrument puternic, open-source, conceput atât pentru mediul Node.js, cât și pentru browsere. Principalul avantaj al bibliotecii este separarea designului de logică. Utilizatorii ne‑tehnici pot proiecta aspectul și stilizarea în Word, în timp ce dezvoltatorii se concentrează pe injectarea datelor. Aceasta suportă logică complexă, cum ar fi bucle, formatare condițională și chiar execuția fragmentelor de JavaScript direct în document. Acest lucru o face o soluție ideală pentru dezvoltatorii care trebuie să producă rapoarte de înaltă fidelitate fără a se lupta cu XML sau cu instrumente de design proprietare.
Începerea cu Docx-templates
Modul recomandat de instalare a bibliotecii Docx-templates este prin npm. Vă rugăm să utilizați comanda următoare pentru o instalare fără probleme
Instalați Docx-Templates prin NPM
$ npm install docx-templates Instalați Docx-Templates prin Yarn/strong>
$ yarn add docx-templates Generare de documente bazată pe șabloane prin API JS
Biblioteca open source Docx-Templates permite dezvoltatorilor de software să creeze documente în Word și să injecteze date dinamic folosind comenzi simple. Această abordare separă prezentarea de logică, făcând șabloanele ușor de gestionat și actualizat fără a modifica codul. Poți accesa direct proprietățile din obiectul tău de date sau chiar să rulezi expresii simple. De exemplu, pentru a insera un nume complet, șablonul tău ar arăta astfel: {firstName} {surname}. Biblioteca evaluează codul și îl înlocuiește fără probleme.
Cum să creați dinamic documente Word în aplicații 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);
Injectare dinamică de imagini prin JavaScript
Dincolo de text, biblioteca open source Docx-Templates poate injecta imagini în timp real. Aceasta include fișiere locale, imagini de la un URL sau chiar coduri QR generate programatic. Poți controla dimensiunea imaginii și poziționarea acesteia. Această funcționalitate schimbă jocul în crearea ecusoanelor de identificare, catalogelor de produse sau rapoartelor care necesită grafice dinamice și dovezi vizuale. Iată un exemplu simplu care demonstrează cum să inserezi o imagine într-un document Word prin API-ul JavaScript.
Cum să inserați o imagine în timp real în documente Word prin API-ul 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()}
Bucla puternică (FOR/END-FOR)
Manipularea listelor de date este fără probleme cu comanda FOR. Această funcție vă permite să iterați peste matrici pentru a genera rânduri de tabel, liste sau chiar secțiuni întregi ale unui document. Biblioteca Docx-Templates a inclus suport pentru bucle imbricate, permițându-vă să reprezentați structuri de date ierarhice complexe, cum ar fi o listă de departamente cu angajații lor respectivi, menținând în același timp stilul original Word. Exemplul de cod de mai jos arată cum să realizați acest lucru.
Cum să aplicați bucle avansate în aplicații 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}
*/
Context JavaScript personalizat (EXEC)
Una dintre cele mai avansate funcționalități ale bibliotecii Docx-Templates este capacitatea de a rula fragmente arbitrare de JavaScript utilizând comanda EXEC (sau !). Prin furnizarea unui additionalJsContext, puteți expune funcții helper personalizate către șablon. Acest lucru permite șablonului să efectueze calcule, să formateze datele sau să manipuleze șiruri de caractere intern, fără a fi nevoie să pre-procesezi fiecare bucată de date în logica principală a aplicației.