Open-source libraries for PowerPoint .pptx files — in .NET, C++, Java and Python.
Read, create and edit PowerPoint presentations from your own code. No PowerPoint, no Microsoft Office, no COM automation, no headless converter process, no network calls: each library parses and writes the OOXML package directly.
All four editions are MIT licensed.
| Edition | Repository | Getting it |
|---|---|---|
| Python | Aspose.Slides-FOSS-for-Python | pip install aspose-slides-foss — on PyPI. Python 3.10+, one dependency (lxml). |
| .NET | Aspose.Slides-FOSS-for-.NET | dotnet add package Aspose.Slides.FOSS — on NuGet. Targets .NET 8 and .NET 10. No runtime package dependencies. |
| Java | Aspose.Slides-FOSS-for-Java | org.aspose:aspose-slides-foss — on Maven Central. Java 21, Maven. No runtime dependencies. |
| C++ | Aspose.Slides-FOSS-for-Cpp | Install-Package Aspose.Slides.Cpp.FOSS on Windows with MSVC v143+ — on NuGet; or CMake FetchContent on any platform. C++20, CMake 3.20+; pugixml and miniz fetched automatically. |
All four editions ship a published package. Each
repository's README.md is the working reference for that edition, with runnable examples for every
feature listed below.
These are four native implementations, not bindings around a shared core: the .NET edition is C#, the Java edition is Java, the C++ edition is C++. The object model is deliberately parallel across them, so code translates almost line for line — but each is idiomatic in its own language.
- Presentation I/O — open, create and save
.pptx - Slides — add, remove, clone, reorder, iterate
- Shapes — AutoShapes, PictureFrames, Tables, Connectors
- Text — TextFrame / Paragraph / Portion, with character, paragraph and text-frame formatting, including bullets
- Fill — solid, gradient, pattern and picture fills
- Lines — width, dash style, arrows, join, alignment
- Effects — outer shadow, glow, soft edge, blur, reflection, inner shadow
- 3D — bevel, camera, light rig, material, extrusion depth
- Document properties — core, app and custom properties
- Notes slides — per-slide notes with header/footer management
- Comments — with authors, timestamps and positions
- Images — embed from file, bytes or stream
Additionally in the Python edition today: charts (70+ types, with the embedded workbook, axes, trendlines, error bars and data labels), shape and text animations, slide transitions (57 types), themes, slide and master backgrounds, group shapes, and Markdown export in 24 flavour dialects.
Parts of a file that a library does not yet understand are preserved verbatim on save. Opening a deck and re-saving it will not silently strip content — which is the property that makes these libraries safe to put in the middle of an automated pipeline.
Across all editions: SmartArt, OLE objects, mathematical text; export to PDF, HTML, SVG and image formats; VBA macros; digital signatures; hyperlinks and action settings.
Charts, animations and slide transitions currently exist in the Python edition only.
If your use case needs rendering, conversion, or the legacy .ppt and .odp formats, see
Aspose.Slides — the commercial product these libraries share
a name and a design lineage with. It is a separate, closed-source product with its own licence, its own
documentation and support forum.
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
shape = prs.slides[0].shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
shape.add_text_frame("Hello, world!")
prs.save("hello.pptx", SaveFormat.PPTX)The same program in C#, Java and C++ is in each repository's README.
- Product pages — Aspose.Slides FOSS, and per edition: .NET · C++ · Java · Python
- API reference and examples — the
README.mdin each repository - Commercial Aspose.Slides — docs.aspose.com/slides
Issues, discussions and pull requests are welcome on every repository. The full guide is in CONTRIBUTING.md; the essentials are below.
Reporting a file that does not work. The single most valuable report is a .pptx that PowerPoint
refuses to open after the library wrote it, or a file the library cannot read that PowerPoint opens
fine. To be actionable a report needs:
- The edition and version (for Python,
pip show aspose-slides-foss; otherwise the commit SHA you built). - A minimal file that reproduces it — attached, not described. Strip it down until removing anything else makes the problem disappear.
- The exact code that produced or consumed the file, short enough to paste whole.
- What you expected and what happened, with PowerPoint's error text quoted verbatim, including the phrase about repairing the presentation if you saw it.
- Whether the input file opens correctly before the library touches it.
A repair prompt is almost always one malformed part in the package. Unzipping the .pptx and naming
the part you suspect turns a day of bisecting into ten minutes.
Pull requests. Keep them focused on one thing, and add a test — every edition has a test suite next
to the source (tests/). Match the surrounding style rather than reformatting. Contributions are
accepted under the MIT licence the projects already carry.
Discussions are the right place for design questions, "is this supposed to work", and showing what you built. Issues are for defects and concrete feature requests.
MIT, in all four repositories.