Sobre el proyecto
rhwp es un visor y editor HWP/HWPX de código abierto basado en Rust y WebAssembly. Se desarrolló consultando documentos públicos de Hancom y se aclara que es un proyecto independiente sin relación de asociación, patrocinio ni aprobación con Hancom. Licencia MIT.
## Alcance de procesamiento de documentos
Analiza HWP 5.0 binario (archivo compuesto OLE2), HWPX (basado en Open XML) y HML (HWPML 2.9/2.91, con soporte limitado solo para estructuras verificadas). Maneja párrafos, tablas, cuadros de texto, imágenes, ecuaciones, gráficos, encabezados/pies de página, páginas maestras y notas al pie/al final.
La renderización admite interlineado, sangría, alineación, tabulaciones, combinación de celdas y estilos de borde, cálculo de fórmulas de celda, diseño multicolumna, numeración de párrafos/viñetas, escritura vertical, encabezados separados para páginas impares/pares, páginas maestras y colocación de objetos (con el texto, como carácter, delante/detrás del texto). Las ecuaciones incluyen fracciones, radicales, subíndices y superíndices, matrices (MATRIX/PMATRIX/BMATRIX/DMATRIX), cases, EQALIGN, familia PILE, operadores grandes (INT/SUM/PROD, etc.), REL/BUILDREL, límites, división larga, letras griegas y más de 100 símbolos matemáticos. La división de páginas maneja división multicolumna, división por filas de tabla y corrección de posición de párrafo basada en vpos.
## Salida y backends de renderizado
Exporta SVG, PNG (requiere funcionalidad nativa de Skia) y PDF mediante CLI. El PDF usa por defecto la ruta compatible con SVG y ofrece una opción para convertir texto en trazados vectoriales y reproducibilidad de bytes; el backend directo nativo de Skia es opcional. En la web se usa renderizado Canvas/CanvasKit, con un IR de pintado común (PageRenderTree → PageLayerTree) donde los backends legacy/layered SVG, Canvas2D, CanvasKit replay y Skia nativo comparten el mismo contrato de plano de reproducción. La solicitud predeterminada es Canvas2D y, si se especifica `?renderer=auto`, solo se fija a CanvasKit cuando el documento pasa la inspección previa. Los caracteres de shaping complejo, combinaciones de hangul antiguo/PUA y la visualización de marcas de composición estructural fijan todo el documento a Canvas2D. La CI de regresión visual verifica diferencias de renderizado y compuertas de PDF.
## Vías de uso
- Demostración web (GitHub Pages), extensión para Chrome/Edge/Firefox, extensión de VS Code (incluido Open VSX)
- Paquetes npm: `@rhwp/editor` (editor embebido en iframe), `@rhwp/core` (API de analizador/renderizador WASM)
- CLI: export-svg, export-png, export-pdf, dump, dump-pages, info, capabilities
- Servidor MCP integrado: con una línea de configuración, usar hwp_info, hwp_search, hwp_fill_fields, hwp_open y herramientas de sesión hwp_doc_* desde hosts MCP como Claude Code
- Binarios de release: linux x86_64, macOS x86_64/aarch64, windows x86_64 y SHA256SUMS.txt
El editor web (rhwp-studio) ofrece edición de texto, diálogos de formato, edición de tablas y una capa de API hwpctl compatible con el entorno web de Hancom (30 acciones, ParameterSet/ParameterArray, Field API). El guardado admite guardado de edición HWP, guardado con preservación semántica HWPX/HML y conversión HWPX→HWP.
## Método de desarrollo
Se basa en Rust 1.93.1 y la compilación WASM se reproduce con Docker. Opera más de 3.400 pruebas de Rust y CI de unidad/e2e/regresión visual de studio. El proyecto adopta explícitamente un enfoque en el que un director de trabajo humano posee la dirección y las decisiones de arquitectura y usa la IA como multiplicador de implementación, pasando por aprobación de planes, revisión de código y compuertas de calidad. El registro de desarrollo se acumula en el directorio mydocs/. Las PR de contribución se reciben contra la rama devel, no main.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.