Конвертація Office-документів у HTML
Кожен handle Office Oxide має метод to_html(), що видає чистий семантичний HTML5 із будь-якого підтримуваного формату. Підходить для прев’ю в браузері, рендеру листів та швидких візуальних діфів.
Одноразовий виклик
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
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();
Що з’являється у виводі
HTML виходить у fragment-форматі — без обгорток <html>, <head>, <body>. Куди монтувати і яку таблицю стилів застосовувати — вирішуєте ви.
| Джерело | HTML-елемент |
|---|---|
| Заголовок | <h1> … <h6> відповідного рівня |
| Абзац | <p> |
| Жирний / курсив / підкреслення | <strong>, <em>, <u> |
| Список | <ul> / <ol> з дочірніми <li> |
| Таблиця | <table> із <thead>, <tbody>, <tr>, <th>, <td> |
| Гіперпосилання | <a href="..."> |
| Зображення | <img src="..." alt="..."> |
| XLSX-лист | <section data-sheet="ім'я"> + <table> |
| PPTX-слайд | <section data-slide="N"> + body + опційний <aside> для нотаток |
Вивід екранований: користувацький контент усередині документа HTML-екранується, тому вставляти результат у сторінку безпечно за замовчуванням.
Обгортка як 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>Звіт</title>
<link rel="stylesheet" href="docs.css">
</head><body>{body}</body></html>"""
open("report.html", "w").write(page)
Сценарії
- Прев’ю в браузері для завантажених документів (
<input type="file">→ WASM →<iframe srcdoc>). - Рендер листів для згенерованих звітів.
- Diff-вьюхи — HTML-діфи осмислено відображаються в інструментах code review.
- Індексація пошуком зі збереженням структури (заголовки можуть бустити результати).
Дивіться також
- Видобування Markdown — коли потрібен текстово-дружній вивід
- Видобування IR — структурований JSON, коли рендерите самі
- Швидкий старт WASM — для конвертації прямо в браузері