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

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

pyodr-6.3.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.3.0.tar.gz.

File metadata

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

File hashes

Hashes for pyodr-6.3.0.tar.gz
Algorithm Hash digest
SHA256 2ddb1a4d9dddd968b7fd1d15fc645391b990d3c2d623a5e5a3bfd42b2ba8c5d8
MD5 e8929e1a1a6ad49632824a9ad33dcb75
BLAKE2b-256 bb313d52553655ddcfca4787a1bab9e27e36a94e8c17b69b0a526fd133a29d79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyodr-6.3.0-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1138db3fe4a5a3e64ac9666ff3868a2e781d19eb5c5893aaa3cd889037a88179
MD5 dd0ad2584e00cebe93e2ba35360283bb
BLAKE2b-256 51a88755775a02d298ba7ee3aeb99264279ffad2a4a22a688c9d1327d94ca6d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyodr-6.3.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 77a943d30624d97f3cd2500cb4d4094a1710a55e637f6df329590f5a7b44ac5d
MD5 4f1fb6bed06b200a932ebb389d281fa3
BLAKE2b-256 9e3a4d8d7f6e9e2c80ef80ffb0627cd92a1647e7d619a6c936a86e8ce53be120

See more details on using hashes here.

Provenance

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