Skip to content

Convertir documentos Office a HTML

Cada handle de Office Oxide trae el método to_html(), que produce HTML5 limpio y semántico desde cualquier formato soportado. Útil para preview en navegador, render de emails o diff visual rápido.

De una sola llamada

Python

import office_oxide

html = office_oxide.to_html("report.docx")
open("report.html", "w").write(html)

Rust

use office_oxide::to_html;

let html = to_html("report.docx")?;
std::fs::write("report.html", html)?;

JavaScript

import { toHtml } from 'office-oxide';
import { writeFileSync } from 'node:fs';

writeFileSync('report.html', toHtml('report.docx'));

Go

html, err := officeoxide.ToHTML("report.docx")
os.WriteFile("report.html", []byte(html), 0o644)

C#

File.WriteAllText("report.html", OfficeOxide.ToHtml("report.docx"));

Handle reutilizable

Python

from office_oxide import Document

with Document.open("slides.pptx") as doc:
    html = doc.to_html()

JavaScript

using doc = Document.open('slides.pptx');
const html = doc.toHtml();

Rust

let doc = office_oxide::Document::open("slides.pptx")?;
let html = doc.to_html();

Qué sale

El HTML es estilo fragmento — sin envoltorios <html>, <head> o <body>. Tú decides dónde montarlo y qué hoja de estilos aplicar.

Origen Elemento HTML
Título <h1><h6> según el nivel de origen
Párrafo <p>
Negrita / cursiva / subrayado <strong>, <em>, <u>
Lista <ul> / <ol> con hijos <li>
Tabla <table> con <thead>, <tbody>, <tr>, <th>, <td>
Hyperlink <a href="...">
Imagen <img src="..." alt="...">
Hoja XLSX <section data-sheet="nombre"> + <table>
Diapositiva PPTX <section data-slide="N"> + cuerpo + <aside> opcional para notas

La salida está escapada: el contenido de usuario dentro del documento se escapa como HTML, así que incrustar el resultado en una página es seguro por defecto.

Empaquetar como página independiente

from office_oxide import Document

with Document.open("report.docx") as doc:
    body = doc.to_html()

page = f"""<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Informe</title>
<link rel="stylesheet" href="docs.css">
</head><body>{body}</body></html>"""

open("report.html", "w").write(page)

Casos de uso

  • Preview en navegador de documentos subidos (<input type="file"> → WASM → <iframe srcdoc>).
  • Render de emails para informes generados.
  • Vistas de diff — los diffs HTML se ven bien en herramientas de code review.
  • Indexación de búsqueda preservando la estructura (los títulos pueden potenciar los resultados).

Véase también