Введение

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Да
PDF.pdfДа
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 – полная документация классов и методов