docxtemplater is a library to generate docx/pptx documents from a docx/pptx template. It can replace {placeholders} with data and also supports loops and conditions. The templates can be edited by non-programmers, for example your clients.
- Replace a {placeholder} by a value
- Use loops: {#users} {name} {/users}
- Use loops in tables to generate columns
- Use conditions (if users.length>3) with angular Parsing
- Insert custom XML {@rawXml} (for formatted text for example)
- Installation in node
- Installation in the browser
- Generate a document in node
- Generate a document in the browser
The full documentation of the latest version can be found on read the docs.
See CHANGELOG.md for information about how to migrate from older versions.
A user of docxtemplater named Timofey also created a tool to create documents easily :
You can find the tool at : https://ntsdk.github.io/docxtemplater/docxtemplater-en.html , and a screencast showing how it works at https://www.youtube.com/watch?v=uE9By5zEwss
They are a few similar libraries that work with docx, here’s a list of those I know a bit about:
- docx4j :JAVA, this is probably the biggest docx library out there. There is no built in templating engine, but you can generate your docx yourself programmatically
- docx.js: Javascript in the browser, you can create (not modify) your docx from scratch, but only do very simple things such as adding non formatted text
- xlsx-templater : its working quite well, does the same as here but for xlsx
- officegen : works only server side for the moment but will be released soon for browser support
Functionality can be added with modules. Here is the list of existing modules:
PRO Modules developped by docxtemplater core team :
- Image module using the syntax:
{%image}
, - Html Module to insert formatted text in a docx document
- Slides Module to create multiple slides dynamically
- Subtemplate Module to include a document inside an other document
- Word-Run Module to include raw runs (<w:r>) inside the document. This makes it possible to include styled text without having to remove the enclosing paragraph like in the {@rawXml} tag.
- QrCode Module to replace an image, keeping any existing properties
- Error Location Module to show the errors in the template with comments inside the template
- Table Module to create tables from two dimensional data.
User-contributed modules :
- Chart Module using the syntax:
{$chart}
, user contributed (compatible with v2 only) - Hyperlink module using the syntax:
{^link}
, (compatible with v2 only)