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.
- 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
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.
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();
}
}
}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();
}
}
}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();
}
}
}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();
}
}
}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();
}
}
}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
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.
- ✓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.
.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.
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