ASPOSE.SLIDES FOR PYTHON VIA .NET · ON-PREMISES LIBRARY · NO MICROSOFT OFFICE REQUIRED
PowerPoint files, from Python.
Aspose.Slides for Python via .NET creates, edits, converts and renders PowerPoint and OpenDocument presentations from ordinary Python code. It is a binding over the Aspose.Slides .NET engine, not a pure-Python rewrite: one wheel from PyPI carries the compiled engine and the .NET runtime it needs, so there is no .NET SDK to install and no JVM anywhere in the stack. Python 3.5 or later on Windows, Linux or macOS, running in your own process - on Linux and macOS the wheel also wants libgdiplus and the native dependencies of the .NET Core runtime.
- CLI
pip install aspose-slides- Import
import aspose.slides as slides- Linux
apt-get install -y libgdiplus
Windows, Linux and macOS on CPython 3.5 or later. The wheel is a compiled binding rather than pure Python, and it ships the .NET runtime it needs inside the package, so there is no .NET SDK to install and no JVM in the stack. Linux and macOS additionally need libgdiplus (apt-get install libgdiplus, or brew install mono-libgdiplus), the native dependencies of the .NET Core runtime and a Python built with a shared libpython; on Windows the wheel alone is enough. Containers are fine, and a minimal image should add libgdiplus and at least one font package.
Prefer not to host it yourself? The same work is available as a hosted REST API through Aspose.Slides Cloud.
189 / 82
Shape types and chart types, each a real object that PowerPoint still recognises and lets a person edit.
13 -> 12
Presentation formats read and written, including the pre-2007 binary .ppt container and OpenDocument .odp, plus 9 further export targets.
1
PyPI wheel, aspose-slides. It carries the compiled .NET engine inside it, so there is no .NET SDK to install and no JVM to run.
0 / 1
Microsoft Office installs needed, and one native package on Linux and macOS: libgdiplus. On Windows the wheel alone is enough.
Five things people actually write
All examples on GitHub →Each sample is the whole program, Python as shipped. Pick the job on the left.
import aspose.slides as slides
with slides.Presentation("quarterly-review.pptx") as presentation:
presentation.save("quarterly-review.pdf", slides.export.SaveFormat.PDF)
presentation.save("quarterly-review.html", slides.export.SaveFormat.HTML)
tiff_options = slides.export.TiffOptions()
tiff_options.dpi_x = 300
tiff_options.dpi_y = 300
tiff_options.compression_type = slides.export.TiffCompressionTypes.LZW
presentation.save("quarterly-review.tiff", slides.export.SaveFormat.TIFF, tiff_options)import aspose.slides as slides
with slides.Presentation("quarterly-review.pptx") as presentation:
for index, slide in enumerate(presentation.slides, start=1):
with slide.get_image(2.0, 2.0) as image:
image.save(f"slide-{index}.png", slides.ImageFormat.PNG)import aspose.slides as slides
import aspose.slides.charts as charts
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue = [128.4, 141.9, 137.2, 168.5]
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 620, 400)
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("Revenue by quarter")
workbook = chart.chart_data.chart_data_workbook
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
for row, quarter in enumerate(quarters, start=1):
chart.chart_data.categories.add(workbook.get_cell(0, row, 0, quarter))
series = chart.chart_data.series.add(workbook.get_cell(0, 0, 1, "Revenue"), chart.type)
for row, value in enumerate(revenue, start=1):
series.data_points.add_data_point_for_bar_series(workbook.get_cell(0, row, 1, value))
presentation.save("revenue.pptx", slides.export.SaveFormat.PPTX)import aspose.slides as slides
with slides.Presentation("quarterly-review.pptx") as presentation:
presentation.protection_manager.encrypt("open-sesame")
presentation.protection_manager.set_write_protection("edit-me")
presentation.save("quarterly-review-locked.pptx", slides.export.SaveFormat.PPTX)
load_options = slides.LoadOptions()
load_options.password = "open-sesame"
with slides.Presentation("quarterly-review-locked.pptx", load_options) as presentation:
print(presentation.protection_manager.is_encrypted)
print(presentation.protection_manager.is_write_protected)import aspose.slides as slides
parts = ["intro.pptx", "results.pptx", "appendix.pptx"]
with slides.Presentation(parts[0]) as deck:
for part in parts[1:]:
with slides.Presentation(part) as source:
if (source.slide_size.size.width != deck.slide_size.size.width
or source.slide_size.size.height != deck.slide_size.size.height):
source.slide_size.set_size(
deck.slide_size.size.width,
deck.slide_size.size.height,
slides.SlideSizeScaleType.ENSURE_FIT)
for slide in source.slides:
deck.slides.add_clone(slide)
deck.save("handbook.pptx", slides.export.SaveFormat.PPTX)Browse by operation
Each operation has its own page, listing the formats it covers with a code sample for each.
What goes in, what comes out
Read in only
Other content read inplaced into a presentation rather than opened as one
- HTML
- raster image
Read onlyno writer in the API
- PPT95
Aspose.Slides
12 formats read and written — presentation files, proven by writing each one and reading it back.
- FODP
- ODP
- OTP
- POT
- POTM
- POTX
- PPS
- PPSM
- PPSX
- PPT
- PPTM
- PPTX
Written out only
Written onlyexport targets, not presentation files
- GIF
- HTML
- HTML5
- MD
- SWF
- TIFF
- XML
- XPS
Slide imagesrendered from a slide
- BMP
- EMF
- GIF
- JPEG
- PNG
- SVG
- TIFF
Capabilities, one line each
One object model covers the whole file - slides, layouts and masters, shapes and text, tables, charts, SmartArt, animation, media, comments and speaker notes - all of it reachable as ordinary Python objects.
As of 2026-08-18. 49 presentation SDKs and services surveyed. Next re-test: November 2026.
- ✓Reads OOXML presentations
- ✓Writes .pptx
- ✓Reads legacy binary PowerPoint
- ✓Writes legacy binary .ppt
- ✓Reads OpenDocument presentations
- ✓Writes .odp
- ✓Exports to PDF
- ✓Imports PDF into a presentation
- ✓Exports slides to raster images
- ✓Exports to HTML
- ✓Extracts text / Markdown / JSON
- ✓Runs entirely on the customer's own infrastructure
- ✓Offered as a hosted API the customer calls — through Aspose.Slides Cloud, a separate product
- ✓Runs without a Microsoft Office / LibreOffice installation
- ✓Works with no outbound network access
- ✓Create from nothing
- ✓Open, modify, save back
- ✓Preserve untouched content
- ✓Merge or append presentations
- ✓Slide thumbnails
- ✓Create charts
- ✓Published performance numbers — one published capacity figure, no benchmark suite
- ✓Air-gapped install and licensing
- ✓.NET · Java / JVM · Python · C / C++
- ✓JavaScript / TypeScript / Node · PHP
- ✓Android, SharePoint and JasperReports integrations
- ✓Language-agnostic REST/HTTP API — through Aspose.Slides Cloud, a separate product
- ✓Public API reference and guides
- ✓Runnable sample projects
- ✓Paid support and escalation
Runs where your code already runs
Where a build of this library is supported, and what each target is for.
Aspose.Slides for .NET
The engine this binding wraps, used directly from C#, VB.NET or F# as a NuGet package.
WINDOWS · LINUX · MACOS
Aspose.Slides for Java
A separate pure-Java build of the same object model. It runs on a JVM rather than on the .NET runtime.
JAVA SE 8 OR LATER
Aspose.Slides for C++
Native headers and libraries for C++ projects, with no managed runtime in the process at all.
WINDOWS · LINUX · MACOS
Aspose.Slides for Node.js via .NET
The same bundled .NET engine behind a JavaScript binding, installed from npm.
WINDOWS · LINUX · MACOS
Aspose.Slides for PHP via Java
A PHP binding over the Java build, so it needs a JVM and the PHP-Java bridge alongside PHP.
JVM REQUIRED
The same object model on other platforms: .NET, Java, C++, Node.js and PHP, reading and writing the same formats and producing the same output.All high-code APIs →
Start with the trial, license when you ship
The trial is the full API. It applies an evaluation watermark when a presentation is opened or saved and replaces extracted text with an evaluation notice, so you can test the formats you actually care about before you talk to anyone. A temporary licence lifts both for 30 days.
If you don't want a library
Aspose.Slides Cloud is a hosted REST API for loading, creating, editing and converting presentations.
No-code apps
In use
The product worked as advertised, the documentation was easy to follow, and the support forums were all the help we needed. The final solution that we deployed has exceeded our initial expectations by a great deal.
— BRUCE BRIEN · STRATASCOPE INC, USA