HTML 콘텐츠를 마이크로소프트 워드(DOCX) 문서로 변환하는 새로운 오픈소스 라이브러리 ‘DOM-docx’가 개발자 커뮤니티에 공개되었습니다. 이 라이브러리는 단순히 HTML 페이지를 이미지로 캡처하거나 레이아웃을 흉내 내는 방식이 아닌, 단락, 목록, 표, 이미지 등 시맨틱 HTML 요소를 워드의 고유한 OOXML(Office Open XML) 형식으로 직접 변환하여 편집 가능한 문서를 생성하는 것이 특징입니다. Node.js 환경은 물론, 사용자의 브라우저 탭 내에서도 작동하여 다양한 활용 가능성을 제시합니다.
DOM-docx는 HTML 조각(fragment)을 입력받아 워드 문서로 변환하며, 기본적으로 인라인 스타일(inline style)을 지원합니다. CSS 스타일 블록이나 클래스/ID 셀렉터를 해석해야 하는 고급 기능(styleSource: "computed")의 경우, Node.js에서는 선택적 종속성(optional peer dependency)인 플레이라이트(Playwright)와 크로미움(Chromium)을 활용하고, 브라우저 환경에서는 라이브 DOM(Live DOM)의 getComputedStyle 기능을 사용합니다. 또한, 차트나 복잡한 SVG 같은 요소를 PNG 이미지로 래스터화(rasterizeInPlace)하여 워드 문서에 포함하는 기능도 제공하여, 웹 페이지의 시각적 요소를 충실히 재현할 수 있도록 돕습니다. 개발팀은 시각적 회귀 루프(visual regression loop)를 통해 크로미움 렌더링, DOCX 변환, 리브레오피스(LibreOffice) 래스터화를 거쳐 레이아웃 충실도를 지속적으로 개선하고 있습니다.
이 라이브러리는 웹 기반 콘텐츠를 워드 문서로 내보내야 하는 다양한 시나리오에서 유용하게 활용될 수 있습니다. 예를 들어, 웹 기반 보고서, 기사, 매뉴얼 등을 오프라인에서 편집하거나 공유해야 할 때 개발자들이 수작업 없이 효율적으로 문서를 생성할 수 있게 됩니다. 특히, 기존의 HTML-to-DOCX 변환 도구들이 스크린샷 방식이거나 레이아웃 호환성이 떨어지는 경우가 많았던 점을 고려하면, DOM-docx는 개발자들에게 훨씬 더 유연하고 고품질의 결과물을 제공하는 강력한 대안이 될 것입니다. 이는 웹 애플리케이션의 문서 내보내기 기능을 강화하고 사용자 경험을 개선하는 데 크게 기여할 수 있습니다.