Skip to main content

rpptx-py

Native rpptx for Python

rpptx gives Python applications a native PPTX workflow for creating, opening, editing, and saving PowerPoint-compatible presentations. It also supports comments, speaker notes, and deterministic rendering. It works directly with OOXML packages and does not require Microsoft PowerPoint, LibreOffice, a conversion service, or a Java or .NET runtime.

The package runs the Rust rpptx presentation engine locally, exposes a typed Python API, and ships a default template for from-scratch deck creation. It renders slides and speaker notes without a remote service, supports review through notes and modern comment threads, and preserves safe package content outside the focused Python editing surface.

Installation

Install the current release from PyPI:

python -m pip install rpptx

rpptx requires CPython 3.9 or newer. Its platform wheels use the Python 3.9 stable ABI, so one wheel supports multiple compatible Python versions. Source installation requires a Rust toolchain and maturin.

Quick start

from rpptx import Presentation
from rpptx.util import Inches

presentation = Presentation()
slide = presentation.slides.add_slide(presentation.slide_layouts[6])
text_box = slide.shapes.add_textbox(
    Inches(1), Inches(1), Inches(8), Inches(1)
)
text_box.text = "Quarterly review"
presentation.save("review.pptx")

pdf = presentation.to_pdf()
with open("review.pdf", "wb") as output:
    output.write(pdf)

Capabilities

  • File and byte-based PPTX input and output.
  • Slide layouts, slides, placeholders, shapes, text frames, paragraphs, runs, pictures, preset shapes, and tables.
  • Deterministic PDF and PNG output for slides and speaker notes.
  • Formatting-preserving text replacement across slides and speaker notes, on one slide or in one text frame, with an optional expected count that leaves the deck unchanged on a mismatch.
  • Package and PresentationML validation that returns the issues rpptx validate reports as typed values.
  • Speaker-note text plus modern comment authors, threads, replies, thread resolution and removal, and ordered comment movement.
  • Master, layout, placeholder, theme, shape, chart, media, and relationship state remains inside the native presentation engine during package edits.
  • Read speaker-note text and inspect or mutate modern comment threads.
  • Python collections with negative indexes, slices, iteration, and explicit stale-handle errors after structural changes.
  • Table cell merge and split, cell fills, margins, and borders, and row heights.
  • Table rows and columns added with table.rows.add_row() and table.columns.add_column() and removed with remove, keeping merged cells and the frame size in step.
  • Picture crop, read and written as in python-pptx.
  • Shape z-order through slide.shapes.move(from_, to).
  • Group members added through group.shapes, with the group refit to its members as in python-pptx.
  • Run hyperlinks, read, added, retargeted, and removed as in python-pptx.
  • Shape click actions, a hyperlink or a slide jump, through shape.click_action as in python-pptx.

Use it when

Use rpptx when a Python service, desktop application, or automation task needs to create, inspect, update, comment on, or render presentations locally. It is suited to generated decks, template workflows, review, and previews.

Relationship

The Python API is intentionally focused. It covers the documented rpptx surface and the reviewed python-pptx Getting Started workflows, but it is not a drop-in replacement for every python-pptx method or private lxml object.

Example

Open and inspect an existing presentation:

from rpptx import Presentation

presentation = Presentation("deck.pptx")
print(len(presentation.slides))
png = presentation.render_slide_to_png(0)
for slide in presentation.slides:
    print(slide.notes_text or "")

Type checking

The distribution includes hand-written extension stubs and a py.typed marker. Editors and type checkers can inspect concrete presentation, slide, shape, text, table, notes, and comment types.

python -m pip install mypy
python -m mypy your_application.py

The release gate validates the installed package with strict mypy and stubtest in addition to its runtime suite.

License

Licensed under either the MIT License or the Apache License 2.0, at your option.

Metadata

Release files for rpptx 0.13.1

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

Source distribution (sdist)

Source distribution for rpptx 0.13.1
File Size Uploaded
rpptx-0.13.1.tar.gz 6.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for rpptx 0.13.1
File
rpptx-0.13.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
rpptx-0.13.1-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details
rpptx-0.13.1-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
rpptx-0.13.1-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
rpptx-0.13.1-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
rpptx-0.13.1-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 71.2 MB

Release files / rpptx-0.13.1.tar.gz

Download URL rpptx-0.13.1.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
49fab97aaac0892e8a9dea378379a0da5a5a3d29c22c200806d0c4f673fe17dc
BLAKE2b-256 checksum
How to use checksums
8dfd8ca1accc4c913175d7b681915e7178a2ee4d606b264b06af73c1331c2000
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-win_amd64.whl

Download URL rpptx-0.13.1-cp39-abi3-win_amd64.whl
Size 11.1 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
1373db7754292051c6eefa75bc34bc9228345edeb062374604e470a4dfed966e
BLAKE2b-256 checksum
How to use checksums
95e0d1bff14c12767d8bed8a87101154689215a56971fe9adceaa0375953a61c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL rpptx-0.13.1-cp39-abi3-musllinux_1_2_x86_64.whl
Size 11.1 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
d9df5d855cfa795c145efc3ceaa20adf7256ed3a0f3484fb50a80549c46897cd
BLAKE2b-256 checksum
How to use checksums
2da535dd0d3ceb224cd94cce45e215e6f29bdfef6cae0bd4bee4db2770e09a95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL rpptx-0.13.1-cp39-abi3-manylinux_2_28_x86_64.whl
Size 10.9 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
be44e2045266d8b9d63f832282de43d5fcbf5d8a5d6bc1d869564d601519915b
BLAKE2b-256 checksum
How to use checksums
ceff4d73ea20f1ffba67350db2b3a6951f47217fc8be2034f48e09818fbffb9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL rpptx-0.13.1-cp39-abi3-manylinux_2_28_aarch64.whl
Size 10.7 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
6428d67619d6d17152f056a6ed6ac8742d6144206a40dbe8b0269fcb6f71be34
BLAKE2b-256 checksum
How to use checksums
50530bcc2b586117790a9d69f01f61467f64b41166e1838202aa3f7585c34b93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-macosx_11_0_arm64.whl

Download URL rpptx-0.13.1-cp39-abi3-macosx_11_0_arm64.whl
Size 10.7 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9b33e6a055c8977546bbce55de97a6919c282b711cb51b48c6fa672d7662adf1
BLAKE2b-256 checksum
How to use checksums
008ca6476e45daf6f158cf27d0b8c5cc30f599cf31dd3dde5133efa7b81359cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release files / rpptx-0.13.1-cp39-abi3-macosx_10_12_x86_64.whl

Download URL rpptx-0.13.1-cp39-abi3-macosx_10_12_x86_64.whl
Size 10.8 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
12bfe513a8664aa5bf6304f0d7172cf95144858a82147ba9d5f51f03bb31b6c1
BLAKE2b-256 checksum
How to use checksums
f2283034e2a817053132068b5c758db2fc0b4c905f1c988a52f13d78175e82fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.14.2

7 release files

0.14.1

7 release files

This release

0.13.1 This release

7 release files

0.12.1

7 release files

0.11.0

7 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