TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
브라우저에서 100% 작동하는 Word(.docx) 문서 편집기
Editor de documentos Word (.docx) que funciona 100% en tu navegador: vista fiel a Word, edición directa sobre la página y cambios sin pérdidas. Hecho en Rust + WebAssembly, sin servidores.
생산성Rust · JavaScriptGitHub @dimarborda온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Editor de Word (.docx) en el navegador: Rust + WebAssembly + Canvas. Sin servidor.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Editor de documentos Word (.docx) que corre 100% en el navegador, escrito en Rust y compilado a WebAssembly.
Abre un .docx, edítalo directamente sobre la página, rellena variables de plantilla {{...}} y descárgalo de nuevo. Ningún archivo sale de tu equipo: no hay servidor.
npm install @dimarborda/docx-editorPensado para editar documentos y plantillas con alta fidelidad a Word, sin salir del navegador. Revisa las limitaciones conocidas antes de integrarlo.
Enter para dividir y Backspace para unir párrafos, edición dentro de celdas de tabla, deshacer y rehacer.{{CAMPO}} aunque Word lo haya partido en varios fragmentos (<w:r>) y lo reemplaza respetando el formato.docDefaults → styles.xml → numbering.xml → formato directo, medición real de fuentes, paginación, sangrías, interlineado, listas numeradas y tablas con bordes resueltos por lado. Las imágenes en línea fluyen con el texto y el texto rodea a las flotantes (cuadrado, estrecho, arriba y abajo, detrás o delante).PAGE, NUMPAGES) y con primera página distinta. Si no caben en el margen, el cuerpo se desplaza como en Word. Un doble clic sobre ellos permite editar su texto (Esc vuelve al cuerpo).gridSpan) o varias filas (vMerge), dibujadas como una sola y sin partirse entre páginas cuando caben.resizeImage, moveImage, setImageWrap, updateImage)..docx ──► Rust/WASM: zip + quick-xml ──► modelo de documento ──► motor de maquetación ──► comandos de dibujo ──► Canvas 2D
▲ │
└───────────── ediciones sin pérdidas del XML ◄── cursor, selección y teclado (JS) ◄────────────────┘
| Módulo | Responsabilidad |
|---|---|
src/lib.rs | API WebAssembly (DocxSession) |
src/docx_parser.rs | Lectura del ZIP y del OpenXML, historial de cambios, cachés |
src/styles.rs | Cascada de estilos, numeración y bordes de tabla |
src/layout_engine.rs | Corte de líneas, paginación, tablas e imágenes |
src/caret.rs | Hit-testing, posición del cursor y rectángulos de selección |
src/paragraph_edit.rs | Ediciones de texto, división y unión de párrafos sin pérdidas |
src/insert_objects.rs | Tablas e imágenes insertadas desde código |
src/image_edit.rs | Tamaño, posición, ajuste del texto y borrado de imágenes |
Solo se vuelven a maquetar y dibujar las páginas que cambian, y las medidas de texto se guardan en caché, así que escribir sigue siendo fluido en documentos largos.
El editor está publicado en npm como @dimarborda/docx-editor: un web component que funciona en cualquier frontend y dentro de apps Tauri.
npm install @dimarborda/docx-editor
<docx-toolbar for="doc"></docx-toolbar>
<docx-editor id="doc" src="/plantilla.docx" style="height: 80vh"></docx-editor>
<script type="module">
import '@dimarborda/docx-editor';
import '@dimarborda/docx-editor/style.css';
</script>
La API completa, los ejemplos con React, Next.js y Tauri y las opciones de fuentes están en la documentación del paquete. Si tu sitio usa una cabecera Content-Security-Policy, añade 'wasm-unsafe-eval' al script-src de producción; los detalles están en la sección Content Security Policy. Un ejemplo mínimo de integración está en apps/demo/embed.html.
El mismo repositorio incluye un editor de libros de Excel que comparte con el editor de Word la capa de paquete OOXML (crates/ooxml-core):
@dimarborda/xlsx-editor: componente <xlsx-editor> que dibuja las hojas en canvas y permite editar valores y fórmulas desde la cuadrícula. Incluye el motor Rust/WebAssembly sin interfaz (@dimarborda/xlsx-editor/engine) para leer, escribir, recalcular y dar formato a libros .xlsx sin perder lo que no se toca, también en Node.js.Con npm run dev, la demo del editor está en http://localhost:5173/xlsx.html.
Todo ocurre en el navegador: los documentos no se envían a ningún servidor, no hay telemetría y el contenido se dibuja en un canvas, sin insertar HTML. El editor no resuelve entidades XML externas, pone límites a lo que un .docx puede ocupar al descomprimirse, y cada despliegue audita las dependencias de Rust y npm. Los detalles están en la sección Seguridad y privacidad del paquete. Para reportar una vulnerabilidad, consulta SECURITY.md.
Todavía no se soportan, o solo en parte:
Si un documento tuyo se ve distinto que en Word, abre un issue con una captura (sin datos personales).
Requisitos: Rust con el target wasm32-unknown-unknown, wasm-pack y Node.js 20 o superior.
git clone https://github.com/dimarborda/rust-web-docx.git
cd rust-web-docx
npm install
npm run build:wasm
npm run dev
Abre http://localhost:5173. Si cambias código en src/, vuelve a ejecutar npm run build:wasm.
cargo testnpm run build (sale en apps/demo/dist/)http://localhost:5173/embed.html.docx en examples/ y aparecerán en la pantalla de inicio. Esa carpeta está ignorada por git, para que tus documentos nunca terminen en el repositorio.El sitio es estático y se publica en Cloudflare Workers. Cada push a master ejecuta las pruebas, compila y despliega con GitHub Actions. Para desplegar a mano:
npm run deploy
npm login
npm run release:check
npm run release -- minor
release:check ejecuta todo sin publicar: pruebas de Rust y JS, compilación del motor, auditoría de dependencias y revisión del contenido del paquete. release acepta patch, minor, major o una versión exacta; publica @dimarborda/docx-editor, confirma chore(release): x.y.z, crea la etiqueta vx.y.z y sube ambos a GitHub. Solo publica desde master, sin cambios pendientes y al día con origin. Si npm pide un código de verificación, añade --otp=123456.
| Atajo | Acción |
|---|---|
| Clic / arrastrar | Colocar el cursor / seleccionar |
Shift + flechas | Ampliar la selección |
Inicio / Fin | Ir al inicio o al final de la línea |
⌘A / Ctrl+A | Seleccionar todo |
⌘Z / Ctrl+Z | Deshacer |
⌘⇧Z / Ctrl+Y | Rehacer |
⌘B ⌘I ⌘U | Negrita, cursiva, subrayado |
⌘F / Ctrl+F | Buscar y reemplazar |
⌘S / Ctrl+S | Descargar el .docx |
| Clic en una imagen | Seleccionarla (asas para cambiar el tamaño; las esquinas mantienen la proporción, Shift la libera) |
| Arrastrar una imagen flotante | Moverla |
Flechas / Shift + flechas | Mover la imagen flotante seleccionada 1 px / 10 px |
Supr / Retroceso | Eliminar la imagen seleccionada |
Esc | Volver al texto |
Rust DOCX is a Word (.docx) editor that runs entirely in the browser: a Rust core compiled to WebAssembly parses the OpenXML, lays out pages the way Word does (style cascade, real font metrics, pagination, tables, inline pictures that flow with the text and floating ones that text wraps around) and renders them to a 2D canvas with its own caret and selection. Pictures can be selected, resized, moved and re-wrapped with the mouse or from code (resizeImage, moveImage, setImageWrap, updateImage). Edits are lossless: only the XML you touched is rewritten. Template placeholders like {{FIELD}} are replaced even when Word splits them across runs. No server is involved, so documents never leave your machine.
Try the live demo, and see the known limitations above.
src/shapes.rs| Cuadros de texto y formas (DrawingML y VML): relleno, borde, márgenes internos y texto |
src/sample_generator.rs | Documento de demostración generado en memoria |
packages/docx-editor/ | Paquete npm reutilizable: DocxEditor, <docx-editor> y barra de herramientas opcional |
apps/demo/ | La demo publicada, construida sobre el paquete |