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.5.0.tar.gz (1.4 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.5.0-cp314-cp314-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

pyodr-6.5.0-cp314-cp314-macosx_26_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pyodr-6.5.0.tar.gz
Algorithm Hash digest
SHA256 73c9cb46f045ada1bf7fd79d7d5d835895f5038f6431457000cb7a196d85386a
MD5 c0dcf5a77d3aec904364d013b3c12969
BLAKE2b-256 46cc37f55e16bbc63b866c154b3c395f2e3f7ae9eed1908f42d95076a62652b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.5.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.5.0-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyodr-6.5.0-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2dadd2933234c617e6cb0c00ed8f5fbb242e943000f7d1fa1a97325d5454559b
MD5 411ab1edf57105fd2f71fc3eb7e38fc3
BLAKE2b-256 79ba830a81743d1700e6809ac1b57d42934db04f8f5a1a02a065c7e8e02b1209

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.5.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.5.0-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for pyodr-6.5.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 6d03f572dbba5118421265e9a127ff6a228f9f1ff32e4aef71287cbbcac07fc0
MD5 835a24d5d2e12ecc66664b12357da123
BLAKE2b-256 35c0222e3adc70de0af6bc57a4cd1c9abc7c647371b993567e89c4aad0fd4f19

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyodr-6.5.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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page