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.14.0

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.14.0
File Size Uploaded
rpptx-0.14.0.tar.gz 6.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for rpptx 0.14.0
File
rpptx-0.14.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
rpptx-0.14.0-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details
rpptx-0.14.0-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
rpptx-0.14.0-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
rpptx-0.14.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
rpptx-0.14.0-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.14.0.tar.gz

Download URL rpptx-0.14.0.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
d13ee71abf966a2b450ed77e5374550c52cc5522e5698f7ed1e5e931381eafd4
BLAKE2b-256 checksum
How to use checksums
9e3de32243d6abfb10730bf1023f35cad4de245bb8a1f005c8ceda813783538d
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-cp39-abi3-win_amd64.whl
Size 11.1 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
99c1bceed2450f37617948819c152a2555c3f5309e30ae0d0cb78cd25aad8c15
BLAKE2b-256 checksum
How to use checksums
75cec5d9aa7175c3a1113a23b65fb83d822e5e21d6eef079e2ac6794f3bf00a2
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-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
c9be73455ca62d0d736d71dbddfb00fc0a0269aae0726dcf9d394af34c65d207
BLAKE2b-256 checksum
How to use checksums
719dedd846f233a8e4d2b7344a025ccbfdf5655ea3470cca4405f32ed665019e
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-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
80f7f252b0593eece52f5eca5e7a902cfa452e064171ed508ca186653cb89e78
BLAKE2b-256 checksum
How to use checksums
8a826540de13d15e1432a1e7f4ad5a9c7c1661c7dbc2b8c610aa059e663c6cb4
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-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
40c893e5dfbeb07cb7eb954bd52372b98317261e79a5ddf8a7a38dad2781a984
BLAKE2b-256 checksum
How to use checksums
96609101dda68bc052cba0400dfba0e83069ad74dfa0a09e9f323c4ad44dbbbe
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-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
7b7b14abc9873faa564db1d420debaf8e930c7474d5d333e1340bc4d80a671fa
BLAKE2b-256 checksum
How to use checksums
9d0a05a449267a07f6896ababf6125ef813910ae0ee35246a2d11fba324af9fc
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 9, 2026.

Transparency log

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

Download URL rpptx-0.14.0-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
7f2e358408146c240352f274beb843cbaa83aab7f40dfe6851e87f748e877093
BLAKE2b-256 checksum
How to use checksums
eaad0427c6b442957846b7ee31f45cd230f03f7e452d2fd6c718bf368d2a3cde
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 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.14.2

7 release files

0.14.1

7 release files

This release

0.14.0 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