Введение
Aspose.Slides FOSS for Java — это бесплатная библиотека с открытым исходным кодом, позволяющая разработчикам Java создавать и изменять презентации PowerPoint без какой-либо зависимости от Microsoft Office. Библиотека поставляется в пакете org.aspose.slides.foss и ориентирована на Java 21 и выше.
Проект выпущен под лицензией MIT, поэтому вы можете использовать его как в личных, так и в коммерческих проектах бесплатно и без необходимости получения API‑ключа. Он предоставляет богатую объектную модель для слайдов, фигур, текста, таблиц, изображений, комментариев и свойств документа, основанную на прямом манипулировании форматом пакета Office Open XML.
С 273 классами, более 2 600 методами и 42 перечислениями ядро API охватывает строительные блоки, необходимые для автоматизации рабочих процессов презентаций в любом Java‑приложении.
Что включено
Жизненный цикл презентации
Класс Presentation является точкой входа для каждой операции. Вы можете создать пустую презентацию и сохранить результат на диск или в OutputStream в различных форматах. Класс реализует AutoCloseable, поэтому он естественно работает с блоками try-with-resources.
import org.aspose.slides.foss.*;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation pres = new Presentation()) {
// A new presentation starts with one blank slide
System.out.println("Slides: " + pres.getSlides().size());
pres.save("output.pptx", SaveFormat.PPTX);
}
Управление слайдами
SlideCollection предоставляет полный контроль над набором слайдов. Вы можете добавлять пустые слайды с addEmptySlide(), дублировать существующие слайды с addClone(), вставлять слайды в определённый индекс с insertEmptySlide(), удалять слайды по ссылке или индексу и перебрать коллекцию.
try (Presentation pres = new Presentation()) {
ILayoutSlide layout = pres.getLayoutSlides().get(0);
pres.getSlides().addEmptySlide(layout);
pres.getSlides().addClone(pres.getSlides().get(0));
System.out.println("Total slides: " + pres.getSlides().size());
}
Фигуры и автофигуры
Класс AutoShape представляет самый распространённый объект, который можно рисовать на слайде. Вы создаёте формы через IShapeCollection.addAutoShape(), указывая константу ShapeType (например, ShapeType.RECTANGLE) и координаты позиции. Каждый AutoShape предоставляет TextFrame для текстового содержимого и FillFormat для визуального оформления.
try (Presentation pres = new Presentation()) {
ISlide slide = pres.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 300, 100, false);
ITextFrame tf = shape.addTextFrame("Hello from Aspose.Slides FOSS");
System.out.println(tf.getText());
}
Текст и абзацы
Rich text моделируется как иерархия объектов TextFrame, ParagraphCollection, Paragraph, PortionCollection и Portion. Вы можете установить обычный текст в кадре напрямую с помощью TextFrame.setText(), либо построить многочастные абзацы, добавляя отдельные экземпляры Portion с различным форматированием.
try (Presentation pres = new Presentation()) {
ISlide slide = pres.getSlides().get(0);
IAutoShape shape = slide.getShapes()
.addAutoShape(ShapeType.RECTANGLE, 50, 50, 400, 100, false);
ITextFrame tf = shape.addTextFrame("First run ");
Portion extra = new Portion("second run");
tf.getParagraphs().get(0).getPortions().add(extra);
System.out.println(tf.getText());
}
Свойства документа
Класс DocumentProperties предоставляет стандартные поля метаданных, такие как title, author, subject, keywords, category и timestamps. Свойства сохраняются в ядре PPTX и в частях расширенных свойств и сохраняются при циклах сохранения/перезагрузки.
try (Presentation pres = new Presentation()) {
IDocumentProperties props = pres.getDocumentProperties();
props.setTitle("Quarterly Report");
props.setAuthor("Engineering Team");
pres.save("report.pptx", SaveFormat.PPTX);
}
Комментарии и аннотации
Подсистема комментариев включает CommentAuthorCollection и CommentCollection. Вы можете добавлять авторов, прикреплять комментарии к конкретным слайдам и позициям, а также считывать существующие аннотации. Данные комментариев хранятся в частях ppt/commentAuthors.xml и ppt/comments/*.xml пакета PPTX.
Быстрый старт
Добавьте зависимость Maven в ваш pom.xml:
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>
Затем создайте и сохраните презентацию:
import org.aspose.slides.foss.*;
import org.aspose.slides.foss.export.SaveFormat;
public class QuickStart {
public static void main(String[] args) {
try (Presentation pres = new Presentation()) {
ISlide slide = pres.getSlides().get(0);
// Add a title shape
IAutoShape title = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 30, 600, 60, false);
title.addTextFrame("Aspose.Slides FOSS for Java");
// Add a content shape
IAutoShape body = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 120, 600, 300, false);
body.addTextFrame(
"This presentation was created entirely in Java "
+ "using a free, open-source library.");
pres.save("quick-start.pptx", SaveFormat.PPTX);
}
}
}
Поддерживаемые форматы
Перечисление SaveFormat определяет каждый формат вывода, который библиотека может записывать. Ниже приведена таблица с подтверждёнными записями.
| Формат | Расширение | Запись |
|---|---|---|
| PPTX | .pptx | Да |
| PPTM | .pptm | Да |
| PPSX | .ppsx | Да |
| PPSM | .ppsm | Да |
| POTX | .potx | Да |
| POTM | .potm | Да |
| ODP | .odp | Да |
| OTP | .otp | Да |
| FODP | .fodp | Да |
| PPT | .ppt | Да |
| PPS | .pps | Да |
| POT | .pot | Да |
| Да | ||
| XPS | .xps | Да |
| HTML | .html | Да |
| HTML5 | .html | Да |
| SVG | .svg | Да |
| TIFF | .tiff | Да |
| PNG | .png | Да |
| JPEG | .jpeg | Да |
| BMP | .bmp | Да |
| GIF | .gif | Да |
| MD | .md | Да |
Перечисленные выше форматы являются подтверждёнными целями экспорта, определёнными в перечислении SaveFormat.
Открытый исходный код и лицензирование
Aspose.Slides FOSS for Java распространяется по лицензии MIT. Полный исходный код доступен на GitHub по адресу Aspose.Slides-FOSS-for-Java. Вы свободно можете использовать, модифицировать и распространять библиотеку в любом проекте без роялти и лицензионных ключей.
Начало работы
Готовы погрузиться глубже? Вот ресурсы, которые помогут вам начать:
- Developer Guide – пошаговые руководства и учебные материалы по каждому разделу функций
- Knowledge Base – статьи с инструкциями и часто задаваемые вопросы
- API Reference – полная документация классов и методов