Skip to main content

pyodr — Python bindings for OpenDocument.core

Decode office documents (ODF, OOXML, legacy MS binary, PDF, CSV, ...) and render them to HTML from Python.

import pyodr

file = pyodr.open("document.odt")
print(pyodr.file_type_to_string(file.file_type()))

service = pyodr.html.translate(file, "cache-dir", pyodr.HtmlConfig())
html = service.bring_offline("output-dir")
for page in html.pages():
    print(page.name, page.path)

A small CLI is included: pyodr <file> renders a document and opens it in the browser; pyodr <file> --serve hosts it over HTTP (via the core HTTP server, available when built with ODR_WITH_HTTP_SERVER).

Building

The bindings are part of the main CMake build, toggled by ODR_PYTHON:

conan install . -o '&:with_python=True' --build missing
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DODR_PYTHON=ON
cmake --build build --target pyodr_core
PYTHONPATH=build/python python -m pytest python/tests

pip install . from the repository root builds a wheel via scikit-build-core (see the root pyproject.toml); run conan install first and point CMAKE_ARGS at the generated conan_toolchain.cmake so the C++ dependencies resolve:

conan install . -o '&:with_python=True' --build missing
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=$PWD/conan_toolchain.cmake" pip install .

Runtime data

There is none. The renderer's css and js are part of the library, so rendering works out of the box, and MIME detection needs no database: mimetype runs the open strategy, so it names what is inside a zip or a compound file rather than answering application/zip for an .odt.

Release files for pyodr 7.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyodr 7.1.0
File Size Uploaded
pyodr-7.1.0.tar.gz 1.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyodr 7.1.0
File Interpreter ABI Platform
pyodr-7.1.0-cp314-cp314-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ x86-64 Details
pyodr-7.1.0-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details

Total release size: 8.3 MB

Release files / pyodr-7.1.0.tar.gz

Download URL pyodr-7.1.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
75dd1fe0474c7e7aa96de4950d9fecc8e4afb5e10b701c4bfbf5999ba75ddeb9
BLAKE2b-256 checksum
How to use checksums
afe7ec8f59dec6e029db0c4b97de0ce521f37c1dcf9a5802126d8f856c364c43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / pyodr-7.1.0-cp314-cp314-manylinux_2_39_x86_64.whl

Download URL pyodr-7.1.0-cp314-cp314-manylinux_2_39_x86_64.whl
Size 3.8 MB
Tags CPython 3.14 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
5e93438ad8b8c51c0a0e5d0527bae195e62632149c21846d0f57695dcf338e68
BLAKE2b-256 checksum
How to use checksums
4c30aa43eb98970c9c8bf7459ff12ad409ee49a4d2b6b13203a4d02f67c7344f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / pyodr-7.1.0-cp314-cp314-macosx_26_0_arm64.whl

Download URL pyodr-7.1.0-cp314-cp314-macosx_26_0_arm64.whl
Size 2.8 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
7f401912b961b328af516f8fd311bb20e7c7fa530b91f860ed18a67848c4002e
BLAKE2b-256 checksum
How to use checksums
7f1aa3110c631ea01ea8da91ede18a91caed2f41ab3979dd8e7386e8ce737d65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

7.2.2

3 release files

7.2.1

3 release files

7.2.0

3 release files

This release

7.1.0 This release

3 release files

7.0.0

3 release files

6.12.0

3 release files

6.11.0

3 release files

6.10.1

3 release files

6.10.0

3 release files

6.9.0

3 release files

6.8.0

3 release files

6.7.1

3 release files

6.7.0

3 release files

6.6.0

3 release files

6.5.0

3 release files

6.4.0

3 release files

6.3.0

3 release files

6.2.0

3 release files

6.1.0

3 release files

6.0.1

3 release files

6.0.0

3 release files

5.7.1

3 release files

5.7.0

3 release files

0.0.2

26 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page