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.4.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.4.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.4.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.4.0.tar.gz.

File metadata

  • Download URL: pyodr-6.4.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.4.0.tar.gz
Algorithm Hash digest
SHA256 27cc249750717ae213ba6db79e13d73a7488a28512c690ab64bd4df5ca9b2a11
MD5 d97f2f918a6d316717da330529ff4b03
BLAKE2b-256 c7f5f92d5e2f4558eac256b7b493b0c5a0252990ed5f92c3fa569b0cb7368e29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyodr-6.4.0-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 60c5fb982172e340cf2cc2895c946f1bd2bd989045ab2a46811d6230b69affcf
MD5 d140f43db09b30f046fe855fb64e8eb9
BLAKE2b-256 f3b2f44dea116bcba042342183c5d94d87d7b9de24b345f011e88bbf81565d91

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyodr-6.4.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 7b2aaa02b2230b539e3df9366b1c8ada73579dbaa99003c85e1315a058aa3f78
MD5 de0d09d76d0c5a2b02f41fac727d209e
BLAKE2b-256 60a5256a2c5d46f9eb8e53a9bf8c5843a1accd1b1854164eaca8bedc4ca8edac

See more details on using hashes here.

Provenance

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