← На главную

dom-docx: HTML в DOCX (85.6%) без скриншотов и таблиц-заглушек

13.07.2026 11:51 · hackernews

Вышла dom-docx — библиотека для конвертации HTML-фрагментов в настоящие, редактируемые DOCX-файлы (формат OOXML). Не надо делать скриншоты. Она превращает <h1>, списки, таблицы, картинки и инлайн-форматирование в родные для Word абзацы и ячейки, а не вёрстает всё таблицами-заглушками.

Главная фишка — визуальный регрессионный цикл для качества: HTML рендерится в Chromium, конвертируется в docx, растеризуется через LibreOffice, затем сравнивается с человеческой оценкой. По последним тестам — 85.6% согласованности с оценками людей.

Установка простая: npm install dom-docx. По умолчанию тащит только docx, cheerio и fflate — без браузера. Режим inline парсит стили из атрибута style="" и работает на чистом JS. Для классов и <style> блоков нужен styleSource: "computed", а значит — Playwright и Chromium. Они подтягиваются как опциональные зависимости: npm install playwright && npx playwright install chromium. Библиотека сама запускает headless-браузер только при необходимости.

Для графиков и сложного SVG (например, Highcharts, canvas) есть rasterizeInPlace. Он растеризует <canvas> и SVG в PNG и вставляет как картинки. Рекомендуют scale: 2 для чёткости.

Работает и в браузере — модуль dom-docx/browser конвертирует HTML прямо в табе пользователя, без Node и Playwright. Для SPA можно передать root — живой DOM-элемент.

Клиентская часть тоже есть: npx dom-docx input.html -o output.docx — конвертация без написания кода. Поддерживаются пайпы: cat fragment.html | npx dom-docx - -o -.

Библиотека понимает заголовки, параграфы, списки (<ul>, <ol> с list-style-type), таблицы, ссылки, инлайн-форматирование, фоны, блокцитаты, <hr>, простые flex-ряды (до 4 элементов), data:-картинки. Для внешних src нужен свой imageResolver.

Из опций: A4/Legal, ориентация, поля, шрифт по умолчанию (Arial 10.5pt), метаданные, колонтитулы, номера страниц, оглавление (tocHtml), обложка (coverHtml), lang, direction (rtl).

Не поддерживается в v0.1.x: внешние CSS-файлы на inline-пути, веб-шрифты, CSS grid/float, формы, <pre>, <dl>, rowspan в таблицах, сложный SVG без растеризации.

Качество проверяется 30+ регрессионными тестами. Есть бенчмарк против html-to-docx и @turbodocx/html-to-docx. Весь код — MIT, лицензия полностью открытая.

Читать оригинал →