NodeJS Docx Templater
docxtemplater is a library to generate docx files from a docx template with {tag}
, it is written in TypeScript.
The open source version supports:
- {tag} replacement
- Conditions
- Loops
- Change delimiters
Other features like chart
, image insert
and pptx/xlsx
supports are provided in paid versions.
Node Usage
Installation
bashnpm i docxtemplater pizzip
Usage
jsconst PizZip = require("pizzip");
const Docxtemplater = require("docxtemplater");
const fs = require("fs");
const path = require("path");
// Load the docx file as binary content
const content = fs.readFileSync(
path.resolve(__dirname, "input.docx"),
"binary"
);
const zip = new PizZip(content);
const doc = new Docxtemplater(zip, {
paragraphLoop: true,
linebreaks: true,
});
// Render the document (Replace {first_name} by John, {last_name} by Doe, ...)
doc.render({
first_name: "John",
last_name: "Doe",
phone: "0652455478",
description: "New Website",
});
const buf = doc.getZip().generate({
type: "nodebuffer",
// compression: DEFLATE adds a compression step.
// For a 50MB output document, expect 500ms additional CPU time
compression: "DEFLATE",
});
// buf is a nodejs Buffer, you can either write it to a
// file or res.send it with express for example.
fs.writeFileSync(path.resolve(__dirname, "output.docx"), buf);
References
Alternatives
- docx-templates - supports image insert for free.