Введение

Aspose.Slides FOSS for Java теперь доступна в Maven Central: бесплатная библиотека с лицензией MIT для создания, чтения и редактирования файлов PowerPoint .pptx полностью на Java, без зависимости от Microsoft Office или какого‑либо проприетарного runtime.

Библиотека предназначена для разработчиков, которым необходимо программно генерировать или манипулировать файлами презентаций: автоматизировать создание наборов слайдов из данных, извлекать текст и метаданные из загруженных файлов PPTX, строить конвейеры отчетности на основе презентаций или встраивать создание презентаций в приложения Spring Boot. Поскольку aspose-slides-foss является чистым Java, она развертывается одинаково на Windows, macOS, Linux и в Docker‑контейнерах.

Ключевые особенности

  • Полная поддержка кругового прохода PPTX: Откройте любой файл .pptx, измените его содержимое и сохраните обратно, не теряя неизвестные XML‑части, которые библиотека ещё не понимает.
  • Управление слайдами: Добавляйте, удаляйте и перебирайте слайды с помощью prs.getSlides(); презентация начинается с одного пустого слайда после new Presentation().
  • AutoShapes, таблицы и соединители: Вставляйте фигуры через slide.getShapes().addAutoShape(), табличные данные через slide.getShapes().addTable() и визуальные соединители между фигурами через slide.getShapes().addConnector().
  • Форматирование текста с богатым набором: Форматируйте текст на уровне символов с помощью PortionFormat: размер шрифта, полужирный, курсив, подчеркивание и цвет ARGB через FillType.SOLID и ColorFormat.
  • Типы заливки: Применяйте заливки FillType.SOLID, GRADIENT, PATTERN или PICTURE к любой фигуре.
  • Визуальные эффекты: Внешняя тень, сияние, мягкий край, размытие, отражение и внутренняя тень через shape.getEffectFormat().
  • 3D‑форматирование: Фаска, камера, система освещения, материал и глубина выдавливания через shape.getThreeDFormat().
  • Заметки докладчика: Прикрепляйте текст заметок к каждому слайду через getNotesSlideManager().addNotesSlide().
  • Тематические комментарии: Добавляйте комментарии с метаданными автора и позицией на слайде.
  • Встроенные изображения: Встраивайте из пути к файлу, байтов или InputStream.
  • Свойства документа: Читайте и записывайте основные, приложенческие и пользовательские свойства.

Начало работы

Добавьте зависимость Maven. Требуется Java 21 или новее.

<dependency>
    <groupId>org.aspose.slides.foss</groupId>
    <artifactId>aspose-slides-foss</artifactId>
    <version>1.0.0</version>
</dependency>

Создайте свою первую презентацию с фигурой и сохраните её:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

public class HelloSlides {
    public static void main(String[] args) {
        try (Presentation prs = new Presentation()) {
            ISlide slide = prs.getSlides().get(0);
            IAutoShape shape = slide.getShapes().addAutoShape(
                ShapeType.RECTANGLE, 50, 50, 400, 120
            );
            shape.addTextFrame("Hello from Aspose.Slides FOSS!");
            prs.save("hello.pptx");
        }
    }
}

Всегда используйте Presentation внутри блока try-with-resources; это гарантирует освобождение всех внутренних ресурсов при выходе из блока.

Пример форматирования текста

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    IAutoShape shape = prs.getSlides().get(0).getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Bold heading in corporate blue");
    IPortionFormat fmt = tf.getParagraphs().get(0).getPortions().get(0).getPortionFormat();
    fmt.setFontHeight(28);
    fmt.setFontBold(NullableBool.TRUE);
    fmt.getFillFormat().setFillType(FillType.SOLID);
    fmt.getFillFormat().getSolidFillColor().setColor(new Color(0, 70, 127));
    prs.save("formatted.pptx");
}

Текущие ограничения

В этом выпуске следующие области генерируют UnsupportedOperationException:

  • Диаграммы, SmartArt и OLE‑объекты
  • Анимации и переходы слайдов
  • Экспорт в PDF, HTML, SVG или графические форматы
  • Гиперссылки, настройки действий, макросы VBA и цифровые подписи

Неизвестные XML‑части, обнаруженные при загрузке, сохраняются дословно при сохранении, поэтому PPTX‑файлы, созданные другими инструментами, безопасно проходят цикл загрузки‑сохранения.

См. также