dom-docx es una librería de código abierto que transforma fragmentos HTML semánticos en archivos .docx nativos de Word (formato OOXML), editables y sin recurrir a capturas de pantalla. Está escrita en JavaScript/TypeScript y se distribuye como un paquete npm instalable con npm install dom-docx, que requiere Node.js 20 o superior y, por defecto, no necesita navegador ni Playwright. Funciona tanto en Node como en el navegador (mediante dom-docx/browser) y también ofrece una interfaz de línea de comandos: npx dom-docx input.html -o output.docx.
La herramienta admite un amplio abanico de elementos HTML: encabezados, párrafos, listas (incluyendo list-style-type), tablas, enlaces, formato en línea, fondos de bloque, citas, separadores <hr>, filas con flex simple (hasta 4 elementos), imágenes (en base64 o mediante un imageResolver definido por el usuario) e incluso SVG sencillo. Por defecto utiliza estilos CSS en línea (styleSource: "inline"), lo que permite una conversión rápida en JavaScript puro. Como opción avanzada, ofrece styleSource: "computed", que resuelve bloques <style> y selectores de clase/id mediante getComputedStyle: en Node necesita Playwright y Chromium como dependencia opcional; en el navegador usa el DOM en vivo sin instalación adicional. Otro modo opcional, rasterizeInPlace, convierte <canvas> y SVG complejos (por ejemplo, gráficos de Highcharts) en imágenes PNG dentro del propio documento, con un scale recomendado de 2 para mayor nitidez.
La API de convertHtmlToDocx permite configurar tamaño y orientación de página (Letter o A4), márgenes, fuente predeterminada (Arial 10,5pt por defecto), metadatos del documento (título, autor, palabras clave), encabezados y pies personalizados, numeración de páginas, idioma y dirección del texto, una página de portada independiente y una ranura para tabla de contenidos. El proyecto incorpora además un sistema de pruebas con regresión visual que puntúa la fidelidad estructural y de maquetación renderizando HTML en Chromium, convirtiendo a .docx y rasterizando con LibreOffice, lo que facilita iterar sobre la calidad de la conversión.
Entre sus limitaciones declaradas en la versión 0.1.x figuran: las hojas de estilo externas no funcionan en el modo inline, no hay soporte para web fonts, CSS grid o floats, formularios, <dl>, rowspan en tablas, cabeceras/pies diferenciados por página par e impar, ni fidelidad total de paginación compleja. El SVG avanzado (rutas, degradados, <use>) solo se convierte correctamente mediante rasterizeInPlace sobre una página ya renderizada. dom-docx se posiciona así como una alternativa ligera y programática para generar documentos Word editables a partir de contenido HTML en aplicaciones web, pipelines de informes o exportaciones desde SPA, sin dependencia obligatoria de servicios externos ni de software pesado.
