ASPOSE.SLIDES FOR JAVA · ON-PREMISES JAR · NO MICROSOFT OFFICE REQUIRED

PowerPoint files, from Java.

Aspose.Slides for Java creates, edits, converts and renders PowerPoint and OpenDocument presentations from ordinary Java code. It is a pure-Java JAR whose POM declares no dependencies and which carries no native library, no COM automation and no .NET runtime underneath it. What it does need is a JVM: Java 6 or later on Windows, Linux, Unix, macOS or a container, plus fontconfig and installed fonts anywhere you render to PDF or images.

Download free trial Documentation Full API on trial · watermark on output
Install
CLI
mvn dependency:get -DremoteRepositories=https://releases.aspose.com/java/repo/ -Dartifact=com.aspose:aspose-slides:26.8:jar:jdk16
Repository
https://releases.aspose.com/java/repo/
Coordinate
com.aspose:aspose-slides:26.8:jdk16
Other platforms, same object model
RUNS ON

Java 6 and later, on Windows, Linux, Unix, macOS and containers. Aspose.Slides for Java is a pure-Java JAR with no declared dependencies and no native library, so a JVM is very nearly the whole prerequisite list; the exception is rendering, where a bare Linux image also needs fontconfig and installed fonts before PDF or image output looks right. The artifact resolves only from the Aspose repository at https://releases.aspose.com/java/repo/ and is not published to Maven Central, so a bare com.aspose:aspose-slides coordinate will fail until you add that repository. No Office install, no COM automation, no X display.

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

    JAR, resolved from the Aspose repository rather than Maven Central. Its POM declares no dependencies, so nothing is dragged in behind it and nothing native sits beside it.

  • Java 6+

    The one real prerequisite. This is pure Java, so no Office install, no COM automation and no X display enter the picture, but it runs inside a JVM and it wants fontconfig and installed fonts wherever it renders.

Five things people actually write

All examples on GitHub →

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

PPTX -> PDF / HTML / TIFF JAVA
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

public class ConvertPresentation {
    public static void main(String[] args) {
        Presentation presentation = new Presentation("quarterly-review.pptx");
        try {
            presentation.save("quarterly-review.pdf", SaveFormat.Pdf);
            presentation.save("quarterly-review.html", SaveFormat.Html);
            presentation.save("quarterly-review.tiff", SaveFormat.Tiff);
        } finally {
            presentation.dispose();
        }
    }
}
One Presentation instance, saved three times. Call dispose() in a finally block to release the file handles and the render cache. Documentation →
ISlide -> IImage -> PNG JAVA
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

import java.awt.Dimension;

public class SlideThumbnails {
    public static void main(String[] args) {
        Presentation presentation = new Presentation("quarterly-review.pptx");
        try {
            Dimension size = new Dimension(1280, 720);
            for (int i = 0; i < presentation.getSlides().size(); i++) {
                ISlide slide = presentation.getSlides().get_Item(i);
                IImage image = slide.getImage(size);
                try {
                    image.save("slide-" + (i + 1) + ".png", ImageFormat.Png);
                } finally {
                    image.dispose();
                }
            }
        } finally {
            presentation.dispose();
        }
    }
}
getImage() also accepts a scale pair or a RenderingOptions for notes and comments. Dispose each IImage as you go so a long deck never holds every bitmap at once. Documentation →
double[] -> IChart -> PPTX JAVA
import com.aspose.slides.ChartType;
import com.aspose.slides.IChart;
import com.aspose.slides.IChartDataWorkbook;
import com.aspose.slides.IChartSeries;
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

public class ChartFromData {
    public static void main(String[] args) {
        String[] quarters = { "Q1", "Q2", "Q3", "Q4" };
        double[] revenue = { 18.4, 21.9, 20.1, 26.7 };

        Presentation presentation = new Presentation();
        try {
            ISlide slide = presentation.getSlides().get_Item(0);
            IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 40, 40, 620, 400);

            IChartDataWorkbook book = chart.getChartData().getChartDataWorkbook();
            chart.getChartData().getSeries().clear();
            chart.getChartData().getCategories().clear();

            chart.getChartData().getSeries().add(book.getCell(0, 0, 1, "Revenue"), chart.getType());
            IChartSeries series = chart.getChartData().getSeries().get_Item(0);

            for (int i = 0; i < quarters.length; i++) {
                chart.getChartData().getCategories().add(book.getCell(0, i + 1, 0, quarters[i]));
                series.getDataPoints().addDataPointForBarSeries(book.getCell(0, i + 1, 1, revenue[i]));
            }

            series.getLabels().getDefaultDataLabelFormat().setShowValue(true);

            presentation.save("revenue.pptx", SaveFormat.Pptx);
        } finally {
            presentation.dispose();
        }
    }
}
The chart carries a real embedded workbook, so whoever opens the deck can pull up the data sheet and change a number. Documentation →
PPTX -> encrypted PPTX JAVA
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

public class ProtectPresentation {
    public static void main(String[] args) {
        Presentation presentation = new Presentation("quarterly-review.pptx");
        try {
            presentation.getProtectionManager().setWriteProtection("do-not-edit");
            presentation.getProtectionManager().encrypt("open-sesame");
            presentation.save("quarterly-review-protected.pptx", SaveFormat.Pptx);
        } finally {
            presentation.dispose();
        }

        LoadOptions options = new LoadOptions();
        options.setPassword("open-sesame");

        Presentation reopened = new Presentation("quarterly-review-protected.pptx", options);
        try {
            System.out.println("Encrypted: " + reopened.getProtectionManager().isEncrypted());
            System.out.println("Write protected: " + reopened.getProtectionManager().isWriteProtected());
        } finally {
            reopened.dispose();
        }
    }
}
encrypt() sets the open password and genuinely encrypts the file. setWriteProtection() only sets the modify password, and does not. Documentation →
3 x PPTX -> 1 PPTX JAVA
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

public class MergePresentations {
    public static void main(String[] args) {
        String[] sources = { "results.pptx", "appendix.pptx" };

        Presentation merged = new Presentation("intro.pptx");
        try {
            for (String path : sources) {
                Presentation source = new Presentation(path);
                try {
                    for (ISlide slide : source.getSlides()) {
                        merged.getSlides().addClone(slide);
                    }
                } finally {
                    source.dispose();
                }
            }

            merged.save("deck.pptx", SaveFormat.Pptx);
        } finally {
            merged.dispose();
        }
    }
}
addClone() brings the source layout and master along when the destination has no match. Overloads let you force a destination layout or master instead. Documentation →

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 below is reached through plain Java objects and getters rather than a bridge or a generated wrapper, and none of it asks for PowerPoint to be installed.

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.

  • .NET

    The C# and VB.NET build of the same object model, on .NET and .NET Framework.

    WINDOWS · LINUX · MACOS

  • C++

    A native build for C++ projects, with no managed runtime sitting underneath it.

    WINDOWS · LINUX · MACOS

  • Python via .NET

    The Python package, with the .NET runtime it needs shipped inside the wheel.

    WINDOWS · LINUX · MACOS

  • PHP via Java

    This same JAR, driven from PHP over a Java bridge. A JVM is required there too.

    WINDOWS · LINUX · MACOS

  • Android via Java

    The same object model built against the Android runtime, for on-device work.

    ANDROID

The same object model, the same class names and the same format support are available for .NET, C++, Python, PHP and Android.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 JAVA · PRODUCTS.ASPOSE.COMPRESENTATION AUTOMATION WITHOUT MICROSOFT OFFICE