
Docxtemplater
Gratis Node.js-bibliotek för att skapa & hantera Word DOCX från mallar
Ett ledande Open Source Node.js-bibliotek gör det möjligt att skapa, redigera och manipulera Word DOCX- och XLSX‑dokument dynamiskt med ett enkelt mallbaserat tillvägagångssätt via JavaScript API.
Vad är Docxtemplater?
I dagens snabba digitala värld är effektivitet av yttersta vikt, särskilt när det gäller dokumenthantering. Oavsett om användare behöver skriva kontrakt, generera rapporter eller skapa personliga brev, så kan ett pålitligt verktyg för att automatisera dokumentskapande spara värdefull tid och resurser. Här kommer Docxtemplater, ett kraftfullt bibliotek som förenklar processen att generera Word‑dokument från mallar. Biblioteket möjliggör mallbaserad dokumentgenerering, där platshållare i en Word‑dokumentmall ersätts med faktiska data för att skapa det slutliga utdata‑dokumentet.
I sin kärna är Docxtemplater ett kraftfullt open source JavaScript‑bibliotek som låter utvecklare skapa och hantera dynamiska Word‑, Excel‑ och PowerPoint‑dokument genom att sammanfoga data med en fördefinierad mall. Genom att utnyttja OpenXML‑formatet ger biblioteket fin kontroll över struktur och innehåll i användarens dokument, så att de kan infoga platshållare som ersätts med faktiska data vid körning.
Docxtemplater är ett mångsidigt bibliotek som ger utvecklare möjlighet att enkelt automatisera dokumentskapande. Genom att utnyttja mallars kraft och datamerging kan du effektivisera ditt dokumentflöde och avsevärt öka produktiviteten. När biblioteket används på rätt sätt kan utvecklare enkelt generera dynamiska dokument som är skräddarsydda efter deras specifika behov. Oavsett om du automatiserar dokumentgenerering eller personaliserar rapporter, är Docxtemplater ett värdefullt verktyg i din verktygslåda.
Hur installerar man Docxtemplater?
För att installera Docxtemplater kan du använda npm, paket‑hanteraren för JavaScript. Använd följande kommandon för en lyckad installation.
Installera Docxtemplater via npm
npm install --save docxtemplater pizzipSkapande av Word‑dokument via mall i Node.js
Det öppna källkodsbiblioteket Docxtemplater gör det enkelt för utvecklare att generera Microsoft Word DOCX‑dokument med en mall. Utvecklare kan injicera dynamiska data i mallen genom att skicka ett objekt med nyckel‑värde‑par för att ersätta platshållare med faktiska data och skapa det slutliga dokumentet. Följande exempel visar hur utvecklare kan ladda en befintlig mall och generera ett Word‑dokument från den i en Node.js‑miljö.
Hur genererar man ett Word‑dokument från en mall i Node.js?
const fs = require('fs');
const Docxtemplater = require('docxtemplater');
// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content);
// Set data to fill placeholders
const data = {
firstName: 'John',
lastName: 'Doe'
};
// Replace placeholders with actual data
doc.setData(data);
// Render the document
doc.render();
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({type: 'nodebuffer'}));
console.log('Document generated successfully!');
Lägg till anpassade funktioner & filter i Node.js‑appar
Anpassade funktioner och filter i Docxtemplater‑biblioteket erbjuder avancerade möjligheter att manipulera data och utföra specifika operationer i mallar. De gör det möjligt för användare att utöka bibliotekets funktionalitet utöver grundläggande ersättning av platshållare, vilket möjliggör dynamisk innehållsgenerering och komplex databehandling. Du kan definiera egna funktioner och filter för att manipulera data eller utföra specifika operationer i dina mallar. Här är ett exempel som visar hur utvecklare kan implementera en anpassad funktion för att beräkna totalpriset för varor i en kundvagn och ett filter för att formatera valutavärden.
Hur beräknar man pris på varor i en kundvagn med en anpassad funktion och använder filter för att formatera valutavärden?
const fs = require('fs');
const Docxtemplater = require('docxtemplater');
// Define custom function to calculate total price
function calculateTotal(items) {
return items.reduce((total, item) => total + item.price * item.quantity, 0);
}
// Define custom filter to format currency
function formatCurrency(value) {
return '$' + value.toFixed(2); // Format as dollars with 2 decimal places
}
// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content, {
parser: {
// Define custom tag for invoking functions
getFunction: function(tag) {
if (tag === 'calculateTotal') {
return calculateTotal;
}
},
// Define custom tag for applying filters
getFilter: function(tag) {
if (tag === 'currency') {
return formatCurrency;
}
}
}
});
// Set data with shopping cart items
const data = {
items: [
{ name: 'Product 1', price: 10, quantity: 2 },
{ name: 'Product 2', price: 20, quantity: 1 },
{ name: 'Product 3', price: 15, quantity: 3 }
]
};
// Replace placeholders with actual data
doc.setData(data);
// Render the document
doc.render();
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));
console.log('Document generated successfully!');
Stöd för rik formatering
Det öppna källkodsbiblioteket Docxtemplater förenklar processen att skapa och hantera Word‑dokument genom att erbjuda ett enkelt mallbaserat tillvägagångssätt. Stöd för rik formatering i Word‑dokument avser möjligheten att tillämpa olika stilattribut, såsom teckensnittsstilar, färger, storlekar, justeringar och mer på olika element i Word‑dokumentet. Detta inkluderar formatering av text, tabeller, bilder, stycken, sektioner, listor, punktlistor och annat innehåll för att förbättra läsbarhet och visuell attraktivitet. Här är ett enkelt exempel som visar hur man applicerar rik formatering på en del av texten i ett dokument.
Hur applicerar man rik formatering på text med Docxtemplater i en Node.js‑applikation?
// Render the document with custom parser options for rich formatting
doc.render({
parser: {
// Custom tag for interpreting HTML-like tags for rich formatting
tagToken: function(tag) {
return {
tagName: tag.substring(1),
mode: 'open'
};
},
// Apply rich formatting based on tag names
commands: {
b: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { b: true }
};
},
i: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { i: true }
};
},
u: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { u: true }
};
},
strike: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { strike: true }
};
}
}
}
});
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));
console.log('Document generated successfully!');
