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; odr_core_data_path() and set_odr_core_data_path(...) are deprecated leftovers that still store and return a path nothing reads.

MIME detection needs no runtime data: mimetype runs the open strategy, so it names what is inside a zip or a compound file. libmagic_database_path() and set_libmagic_database_path(...) are deprecated leftovers of the libmagic backend that used to answer this and could only say application/zip for an .odt; they still store and return a path, but nothing reads it.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyodr-6.12.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyodr-6.12.0-cp314-cp314-manylinux_2_39_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

pyodr-6.12.0-cp314-cp314-macosx_26_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

File details

Details for the file pyodr-6.12.0.tar.gz.

File metadata

  • Download URL: pyodr-6.12.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pyodr-6.12.0.tar.gz
Algorithm Hash digest
SHA256 81337c67fe8aa4d38158de0d6feaf0675e308db71a3da62a37b66cb4ca73370c
MD5 1fc09540c3d7f9b168871c2d12cca4e1
BLAKE2b-256 aa82162ac3572eed4ff8acfaf4a1114433546c655769fa696dd357545221b40e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.12.0.tar.gz:

Publisher: python.yml on opendocument-app/OpenDocument.core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyodr-6.12.0-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyodr-6.12.0-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 883654a49f9d4d1b5f99c4865f4c4df1e7a2ef2c5a7cf59fbcfa9a279b912c3d
MD5 ca0da08476de9d592e3ab8444fada47a
BLAKE2b-256 406b44e70bcce94b3266a3b7acd0070afd441e4a7218efb27965f3044517019f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.12.0-cp314-cp314-manylinux_2_39_x86_64.whl:

Publisher: python.yml on opendocument-app/OpenDocument.core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyodr-6.12.0-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for pyodr-6.12.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 28a56ce9e41b8b9e70ac4bead0c9b7ca248b76f15565d9dfcc20b80ce5cdcbc4
MD5 4a6d770b2a340c1ec58661fdf5ad8ad3
BLAKE2b-256 68062f3efc5077f1131ab1fb8faba82fa07ebc0ff2802a325ec97ecf6e1d94ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.12.0-cp314-cp314-macosx_26_0_arm64.whl:

Publisher: python.yml on opendocument-app/OpenDocument.core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

6.13.0

3 files

This release

6.12.0 This release

3 files

6.11.0

3 files

6.10.1

3 files

6.10.0

3 files

6.9.0

3 files

6.8.0

3 files

6.7.1

3 files

6.7.0

3 files

6.6.0

3 files

6.5.0

3 files

6.4.0

3 files

6.3.0

3 files

6.2.0

3 files

6.1.0

3 files

6.0.1

3 files

6.0.0

3 files

5.7.1

3 files

5.7.0

3 files

0.0.2

26 files

0.0.1.post1

26 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