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 uses the Rust rpptx presentation engine and ships with a default
presentation template for from-scratch deck creation.
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.
- Speaker-note text plus modern comment authors, threads, replies, and ordered comment movement.
- 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.
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.
Project links
License
Licensed under either the MIT License or the Apache License 2.0, at your option.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rpptx-0.11.0.tar.gz.
File metadata
- Download URL: rpptx-0.11.0.tar.gz
- Upload date:
- Size: 5.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6df7229b77cf361b21c757a195481d31ea4725b6c8d9da44296854cfc6600fe
|
|
| MD5 |
47e67b4d690c8906e946ed62a8efe9c9
|
|
| BLAKE2b-256 |
5abbfd8123c4e1324b4fcca7e954d0aeddee6148ccce91b55281ec9022b63664
|
Provenance
The following attestation bundles were made for rpptx-0.11.0.tar.gz:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0.tar.gz -
Subject digest:
f6df7229b77cf361b21c757a195481d31ea4725b6c8d9da44296854cfc6600fe - Sigstore transparency entry: 2841638604
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 10.5 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dabb650d1bc4eb0f8907460db12400e6215004197caad2ca3248e1da80aa2443
|
|
| MD5 |
abb18892664e55eca114ddc596f38b8b
|
|
| BLAKE2b-256 |
84b07ecb51fc235475b6ea09b2ed6925cb7946da93b5e4e61b7cbfb0ae76b556
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-win_amd64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-win_amd64.whl -
Subject digest:
dabb650d1bc4eb0f8907460db12400e6215004197caad2ca3248e1da80aa2443 - Sigstore transparency entry: 2841638808
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 10.6 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca9ab27a7ed7203a8001ef384cbfa2ee6b7d10eab61f350e64192491fba66348
|
|
| MD5 |
e88319b06797b55048e7cc8000626b91
|
|
| BLAKE2b-256 |
0ce6f2dfbc79167a9bb871489eec1ddc567540c061b456c56be1c0a54f145596
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-musllinux_1_2_x86_64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
ca9ab27a7ed7203a8001ef384cbfa2ee6b7d10eab61f350e64192491fba66348 - Sigstore transparency entry: 2841638715
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 10.4 MB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2970d0414a275bdfb94dcd7c119e60a9646899a6204608b1a90b1719717c65bf
|
|
| MD5 |
19cfbec206c2755d95caa4079757d3d7
|
|
| BLAKE2b-256 |
923b49c03bfb7d9ebfe73d350162ff35afc16ce1ecb78d122615d92eb403cade
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
2970d0414a275bdfb94dcd7c119e60a9646899a6204608b1a90b1719717c65bf - Sigstore transparency entry: 2841639200
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 10.1 MB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ede45867c622ed106c997d91dc2b8c763ca59a9e08b718f02395a6d71ebe89d6
|
|
| MD5 |
8114af5aa9d0696fc866a71228a07b60
|
|
| BLAKE2b-256 |
b840711a135c37ae7e6bef5aec80c5fcf79345ebabec4cdbad6ac6f17ab0d763
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
ede45867c622ed106c997d91dc2b8c763ca59a9e08b718f02395a6d71ebe89d6 - Sigstore transparency entry: 2841639102
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.2 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44d5d1590b7ff368ea07fc21f6262ef32310008a2fc26bf8402faf8b018f316f
|
|
| MD5 |
3264398d90d4a938a39bff9e296c3c21
|
|
| BLAKE2b-256 |
909b0e78cdf25df4a95c474fdf62cb56476f61b886411e30618e20814bfa6351
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
44d5d1590b7ff368ea07fc21f6262ef32310008a2fc26bf8402faf8b018f316f - Sigstore transparency entry: 2841638999
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rpptx-0.11.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rpptx-0.11.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 10.3 MB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d594baae6981084bf011a2a2e8165e4ce7efe5e2b7bc268d6a92282f6b5c13ef
|
|
| MD5 |
ed1e7df7c21c316407147623d95b720f
|
|
| BLAKE2b-256 |
7cf253fbd83af3cb1e6fe793fc81a9d03224d5c4c18521af7fd75431baf84cdd
|
Provenance
The following attestation bundles were made for rpptx-0.11.0-cp39-abi3-macosx_10_12_x86_64.whl:
Publisher:
wheels.yml on tensorbee/rdocx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rpptx-0.11.0-cp39-abi3-macosx_10_12_x86_64.whl -
Subject digest:
d594baae6981084bf011a2a2e8165e4ce7efe5e2b7bc268d6a92282f6b5c13ef - Sigstore transparency entry: 2841638906
- Sigstore integration time:
-
Permalink:
tensorbee/rdocx@2b009243ed39ab66470d7484d490985368e865a8 -
Branch / Tag:
refs/tags/py-rpptx-v0.11.0 - Owner: https://github.com/tensorbee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b009243ed39ab66470d7484d490985368e865a8 -
Trigger Event:
push
-
Statement type: