ASPOSE.SLIDES FOR PYTHON VIA JAVA · ON-PREMISES LIBRARY · NEEDS A JRE, NOT MICROSOFT OFFICE

PowerPoint files, from Python on a JVM.

Aspose.Slides for Python via Java creates, edits, converts and renders PowerPoint and OpenDocument presentations from ordinary Python code. It is a binding over the Aspose.Slides Java engine: pip installs the wheel and the JPype1 bridge, and JPype starts a JVM inside your own process — there is no server, no socket and no native extension of ours to build. You supply a JRE 8 or newer on Windows, Linux or macOS; no Microsoft Office install and no COM automation.

Download free trial Documentation Full API on trial · watermark on output
Install
pip
pip install aspose-slides-java
Prerequisite
JRE 8 or newer, JAVA_HOME set
Module
asposeslides
Other platforms, same object model
RUNS ON

Windows, Linux and macOS, wherever CPython 3.7 or newer and a JRE 8 or newer are both installed. JPype1 loads the JVM into the Python process itself — no separate service, no socket, no COM. A headless server or a small container is enough; Microsoft Office and PowerPoint are not needed anywhere.

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.

  • 2

    Python packages pip installs: the Aspose.Slides wheel and the JPype1 bridge it pulls in with it.

  • 1

    Java runtime you provide yourself. JRE 8 or newer, headless is fine, and no Microsoft Office anywhere.

Five things people actually write

All examples on GitHub →

Each sample is the whole program, Python as shipped. Pick the job on the left.

PPTX -> PDF / HTML / TIFF PYTHON
import jpype
import asposeslides

jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

pres = Presentation("quarterly-review.pptx")

pres.save("review.pdf", SaveFormat.Pdf)
pres.save("review.html", SaveFormat.Html)
pres.save("review.tiff", SaveFormat.Tiff)

pres.dispose()

jpype.shutdownJVM()
The rendering engine is inside the package. Nothing else to install. Documentation →
PPTX -> PNG PYTHON
import jpype
import asposeslides

jpype.startJVM()

from asposeslides.api import Presentation, ImageFormat

pres = Presentation("deck.pptx")

for index in range(pres.getSlides().size()):
    slide = pres.getSlides().get_Item(index)
    image = slide.getImage(2.0, 2.0)
    image.save("slide-%d.png" % (index + 1), ImageFormat.Png)
    image.dispose()

pres.dispose()

jpype.shutdownJVM()
getImage returns an IImage. The scale factors set the output resolution. Documentation →
DATA -> PPTX PYTHON
import jpype
import asposeslides

jpype.startJVM()

from asposeslides.api import Presentation, ChartType, SaveFormat

pres = Presentation()
slide = pres.getSlides().get_Item(0)

chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 60, 60, 620, 400)
book = chart.getChartData().getChartDataWorkbook()

chart.getChartData().getSeries().clear()
chart.getChartData().getCategories().clear()

chart.getChartData().getCategories().add(book.getCell(0, 1, 0, "Q1"))
chart.getChartData().getCategories().add(book.getCell(0, 2, 0, "Q2"))
chart.getChartData().getSeries().add(book.getCell(0, 0, 1, "Revenue"), chart.getType())

series = chart.getChartData().getSeries().get_Item(0)
series.getDataPoints().addDataPointForBarSeries(book.getCell(0, 1, 1, 120))
series.getDataPoints().addDataPointForBarSeries(book.getCell(0, 2, 1, 165))

pres.save("report.pptx", SaveFormat.Pptx)
pres.dispose()

jpype.shutdownJVM()
Chart data lives in an embedded workbook. 82 chart types. Documentation →
PPTX -> ENCRYPTED PPTX / PDF PYTHON
import jpype
import asposeslides

jpype.startJVM()

from asposeslides.api import Presentation, PdfOptions, SaveFormat

pres = Presentation("board-deck.pptx")

pres.getProtectionManager().encrypt("s3cret")
pres.save("board-deck-encrypted.pptx", SaveFormat.Pptx)

pdf_options = PdfOptions()
pdf_options.setPassword("s3cret")
pres.save("board-deck.pdf", SaveFormat.Pdf, pdf_options)

pres.dispose()

jpype.shutdownJVM()
The password applies to the deck and to the export. Documentation →
PPTX + PPTX -> PPTX PYTHON
import jpype
import asposeslides

jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

target = Presentation("master.pptx")
source = Presentation("appendix.pptx")

for index in range(source.getSlides().size()):
    target.getSlides().addClone(source.getSlides().get_Item(index))

target.save("combined.pptx", SaveFormat.Pptx)

source.dispose()
target.dispose()

jpype.shutdownJVM()
Layouts and masters travel with the cloned slide. Documentation →

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
  • PDF
  • 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
  • PDF
  • SWF
  • TIFF
  • XML
  • XPS

Slide imagesrendered from a slide

  • BMP
  • EMF
  • GIF
  • JPEG
  • PNG
  • SVG
  • TIFF
Read from the shipping package on 2026-08-21 by writing each file out and reading it back in.

Capabilities, one line each

Everything here is supported in the Python via Java build, which drives the same Java engine through the JPype1 bridge. Where a grey note follows, the capability is delivered through a separate product or comes with a stated limit.

As of 2026-08-18. 49 presentation SDKs and services surveyed. Next re-test: November 2026.

File formats
  • 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
Deployment
  • 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
Document operations
  • Create from nothing
  • Open, modify, save back
  • Preserve untouched content
  • Merge or append presentations
  • Slide thumbnails
  • Create charts
Non-functional
  • Published performance numbers — one published capacity figure, no benchmark suite
  • Air-gapped install and licensing
API & language reach
  • .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
Ecosystem & support
  • 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.

  • CPython 3.7 to 3.14

    The interpreter range the wheel declares on PyPI.

    WINDOWS · LINUX · MACOS

  • JRE 8 or newer

    The engine is Java, so a Java runtime hosts it. Any JRE from 8 up, current LTS releases included.

    WINDOWS · LINUX · MACOS

  • JPype1 bridge

    Installed with the package. It starts the JVM inside your Python process, so there is no server and no socket.

    IN-PROCESS

  • Containers

    A base image with Python and a headless JRE is the whole dependency list.

    DOCKER · LINUX

  • Server frameworks and workers

    Django, Flask, FastAPI and queue workers, with one JVM per process.

    LINUX · WINDOWS · MACOS

Same object model on other platforms: .NET, Java, C++, Node.js, Android, PHP, SharePoint and JasperReports.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.

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

ASPOSE.SLIDES FOR PYTHON VIA JAVA · PRODUCTS.ASPOSE.COMPRESENTATION AUTOMATION WITHOUT MICROSOFT OFFICE