You are currently offline, serving cached version

This module allows to add some HTML to a powerpoint document (pptx).


It is not possible to mix different types of HTML elements in a single shape.

In the PPTX format, everything is inside a "box" which is techically called a "shape" (XML tag <p:sp>) , and a box can contain either :

  • one or multiple paragraphs
  • one table
  • one shape
  • one image

The box is statically positioned (x and y coordinate).

In a pptx template, the tag {~~html} will be inside one particular box, so it can't generate multiple boxes (or they would overlap, which would be unreadable).

This is why one HTML tag : {~~html} will alway render one box, so for example the following HTML data would throw an error because it mixes tables and paragraphs :


The HTML module currently supports:

  • <p>
  • <h1-h6> with some default sizes for each level, the sizes of the titles can be customized
  • <span>
  • <br>
  • <ul>, <ol> and <li> for ordered and unordered lists
  • <strong> and <em>
  • <a href="URL">Linktext</a>


It is possible to set options to the htmlPptxModule in the constructor of the module.

Description of the options :

  • ignoreUnknownTags [default=false]: If this option is set to true, and the module finds an HTML tag that it doesn't handle, it will not fail but instead make as if the tag was of type <span>;
  • ignoreCssErrors [default=false]: If this option is set to true, all CSS errors are ignored and the library tries to parse the CSS with a best-effort algorithm;
  • styleSheet makes it possible to add style to all HTML tags that are inserted.

To ignore all unknown tags:

const module = new HTMLModule({
    ignoreUnknownTags: true,



Make module compatible with docxtemplater@3.28.0. Please make sure to update docxtemplater to 3.28.0 at the same time you update this module. The internal change made is the use of the new matchers API which fixes bugs that were triggered depending on the order of the modules that are attached to the instance. Now the order of the modules should not matter as expected.


Bugfix issue : TypeError: Cannot read properties of undefined (reading 'getElementsByTagName') in `getSlideLayoutPath when using together with the slides module.


Use @xmldom/xmldom instead of xmldom, see this github issue


Generate files in built with correct filename In previous versions, the filename was always build/docxtemplater.js. Now the filename is error-location-module.js The .min.js file is also created now.


Add typescript definitions for public API


When specifying a color with CSS, in previous versions, if the text containing the {~~html} tag was colored with a theme, the document could be corrupted.

This release fixes the bug, the color is now the right one.


Better handle override of style. Includes a quite big rewrite.

For example, it is now possible to override the color of some text in a given run without producing a corruption and without losing all other formatting on that block of text.


Disallow to pass something other than a string to the stylesheet option (because this option only allows to pass a given global stylesheet)


Bugfix when using together with slides module, it would result in the following error :

MultiError :
TypeError: Cannot read property 'length' of undefined
    at HtmlModule.hasListInSlideMaster (docxtemplater-html-pptx-module/es6/index.js:289:19)

Now, loops created with the slides module can contain html-pptx tags


Fix issue with css module :

Module not found: Error: Can't resolve 'fs' in '[...]\node_modules\css\lib\stringify'

Now, the module requires only the part that it uses, which removes this error.


Bugfix to ignore <br> at the end of block elements.


Bugfix to render space in inline HTML tag when using : <b>Foo</b> <i>Bar</i>


Bugfix corruption when using ul and li, sometimes, it would return a float value for spcPts


Add way to specify spacing between bullet and text, and indent of bullet with :

ul li {
    -dxt-bullet-indent: 1in;
    -dxt-bullet-spacing: 1in;

Better handle margin-top/margin-bottom for li tags


Declare supportedFileTypes, which allows to use this module with the new docxtemplater constructor which was introduced in docxtemplater 3.17.


Add support for <u>, <sub> and <sup> tag and for style : text-decoration: underlined.


Initial release