npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

web-docx

v0.1.5

Published

HTML to DOCX converter

Readme

web docx

[![NPM Version][npm-image]][npm-url]

Convert HTML to Microsoft Word document

Base on html-to-docx

Installation

npm i web-docx

or

yarn add web-docx

Usage

import HtmlToDocx from 'web-docx';

await HtmlToDocx(htmlString, documentOptions, headerHTMLString, footerHTMLString);

full fledged examples can be found under example/

Parameters

  • htmlString <[String]> clean html string equivalent of document content.
  • headerHTMLString <[String]> clean html string equivalent of header. Defaults to <p></p> if header flag is true.
  • documentOptions <?[Object]>
    • orientation <"portrait"|"landscape"> defines the general orientation of the document. Defaults to portrait.
    • pageSize <?[Object]> Defaults to U.S. letter portrait orientation.
      • width <[Number]> width of the page for all pages in this section in [TWIP]. Defaults to 12240. Maximum 31680. Supports equivalent measurement in [pixel], [cm] or [inch].
      • height <[Number]> height of the page for all pages in this section in [TWIP]. Defaults to 15840. Maximum 31680. Supports equivalent measurement in [pixel], [cm] or [inch].
    • margins <?[Object]>
      • top <[Number]> distance between the top of the text margins for the main document and the top of the page for all pages in this section in [TWIP]. Defaults to 1440. Supports equivalent measurement in [pixel], [cm] or [inch].
      • right <[Number]> distance between the right edge of the page and the right edge of the text extents for this document in [TWIP]. Defaults to 1800. Supports equivalent measurement in [pixel], [cm] or [inch].
      • bottom <[Number]> distance between the bottom of text margins for the document and the bottom of the page in [TWIP]. Defaults to 1440. Supports equivalent measurement in [pixel], [cm] or [inch].
      • left <[Number]> distance between the left edge of the page and the left edge of the text extents for this document in [TWIP]. Defaults to 1800. Supports equivalent measurement in [pixel], [cm] or [inch].
      • header <[Number]> distance from the top edge of the page to the top edge of the header in [TWIP]. Defaults to 720. Supports equivalent measurement in [pixel], [cm] or [inch].
      • footer <[Number]> distance from the bottom edge of the page to the bottom edge of the footer in [TWIP]. Defaults to 720. Supports equivalent measurement in [pixel], [cm] or [inch].
      • gutter <[Number]> amount of extra space added to the specified margin, above any existing margin values. This setting is typically used when a document is being created for binding in [TWIP]. Defaults to 0. Supports equivalent measurement in [pixel], [cm] or [inch].
    • title <?[String]> title of the document.
    • subject <?[String]> subject of the document.
    • creator <?[String]> creator of the document. Defaults to html-to-docx
    • keywords <?[Array]<[String]>> keywords associated with the document. Defaults to ['html-to-docx'].
    • description <?[String]> description of the document.
    • lastModifiedBy <?[String]> last modifier of the document. Defaults to html-to-docx.
    • revision <?[Number]> revision of the document. Defaults to 1.
    • createdAt <?[Date]> time of creation of the document. Defaults to current time.
    • modifiedAt <?[Date]> time of last modification of the document. Defaults to current time.
    • headerType <"default"|"first"|"even"> type of header. Defaults to default.
    • header <?[Boolean]> flag to enable header. Defaults to false.
    • footerType <"default"|"first"|"even"> type of footer. Defaults to default.
    • footer <?[Boolean]> flag to enable footer. Defaults to false.
    • font <?[String]> font name to be used. Defaults to Times New Roman.
    • fontSize <?[Number]> size of font in HIP(Half of point). Defaults to 22. Supports equivalent measure in [pt].
    • complexScriptFontSize <?[Number]> size of complex script font in HIP(Half of point). Defaults to 22. Supports equivalent measure in [pt].
    • table <?[Object]>
      • row <?[Object]>
        • cantSplit <?[Boolean]> flag to allow table row to split across pages. Defaults to false.
    • pageNumber <?[Boolean]> flag to enable page number in footer. Defaults to false. Page number works only if footer flag is set as true.
    • skipFirstHeaderFooter <?[Boolean]> flag to skip first page header and footer. Defaults to false.
    • lineNumber <?[Boolean]> flag to enable line numbering. Defaults to false.
    • lineNumberOptions <?[Object]>
      • start <[Number]> start of the numbering - 1. Defaults to 0.
      • countBy <[Number]> skip numbering in how many lines in between + 1. Defaults to 1.
      • restart <"continuous"|"newPage"|"newSection"> numbering restart strategy. Defaults to continuous.
    • numbering <?[Object]>
      • defaultOrderedListStyleType <?[String]> default ordered list style type. Defaults to decimal.
    • decodeUnicode <?[Boolean]> flag to enable unicode decoding of header, body and footer. Defaults to false.
    • lang <?[String]> language localization code for spell checker to work properly. Defaults to en-US.
  • footerHTMLString <[String]> clean html string equivalent of footer. Defaults to <p></p> if footer flag is true.

Returns

<[Promise]<[Buffer]|[Blob]>>

Notes

Currently page break can be implemented by having div with classname "page-break" or style "page-break-after" despite the values of the "page-break-after", and contents inside the div element will be ignored. <div class="page-break" style="page-break-after: always;"></div>

CSS list-style-type for <ol> element are now supported. Just do something like this in the HTML:

  <ol style="list-style-type:lower-alpha;">
    <li>List item</li>
    ...
  </ol>

List of supported list-style-types:

  • upper-alpha, will result in A. List item
  • lower-alpha, will result in a. List item
  • upper-roman, will result in I. List item
  • lower-roman, will result in i. List item
  • lower-alpha-bracket-end, will result in a) List item
  • decimal-bracket-end, will result in 1) List item
  • decimal-bracket, will result in (1) List item
  • decimal, (the default) will result in 1. List item

Also you could add attribute data-start="n" to start the numbering from the n-th.

<ol data-start="2"> will start the numbering from ( B. b. II. ii. 2. )

Font family doesnt work consistently for all word processor softwares

  • Word Desktop work as intended
  • LibreOffice ignores the fontTable.xml file, and finds a font by itself
  • Word Online ignores the fontTable.xml file, and finds closest font in their font library

License

MIT