Converter documentos Office para HTML
Todo handle do Office Oxide tem o método to_html(), que produz HTML5 semântico e limpo a partir de qualquer formato suportado. Use para preview no navegador, renderização de email ou diff visual rápido.
De uma chamada
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 reutilizável
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();
O que sai
O HTML é em fragmento — sem invólucros <html>, <head> ou <body>. Você decide onde montar e qual stylesheet aplicar.
| Origem | Elemento HTML |
|---|---|
| Título | <h1> … <h6> no nível correspondente |
| Parágrafo | <p> |
| Negrito / itálico / sublinhado | <strong>, <em>, <u> |
| Lista | <ul> / <ol> com filhos <li> |
| Tabela | <table> com <thead>, <tbody>, <tr>, <th>, <td> |
| Hyperlink | <a href="..."> |
| Imagem | <img src="..." alt="..."> |
| Planilha XLSX | <section data-sheet="nome"> + <table> |
| Slide PPTX | <section data-slide="N"> + corpo + <aside> opcional para notas |
A saída vem escapada: o conteúdo do usuário dentro do documento é HTML-escapado, então embutir o resultado numa página é seguro por padrão.
Embrulhar como página standalone
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>Relatório</title>
<link rel="stylesheet" href="docs.css">
</head><body>{body}</body></html>"""
open("report.html", "w").write(page)
Casos de uso
- Preview em navegador de documentos enviados pelo usuário (
<input type="file">→ WASM →<iframe srcdoc>). - Renderização de email para relatórios gerados.
- Diff views — diffs em HTML renderizam de forma significativa em ferramentas de code review.
- Indexação para busca mantendo a estrutura (títulos podem boostar resultados).
Veja também
- Extração Markdown — quando você quer saída mais textual
- Extração IR — JSON estruturado para você renderizar à sua maneira
- Início rápido WASM — para conversão dentro do navegador