avatar

ShīnChvën ✨

Effective Accelerationism

Powered by Druid

NodeJS Docx Templater

Tue Nov 29 2022

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

npm i docxtemplater pizzip

Usage

const 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