Как начать работу с Aspose.Slides FOSS для Java
aspose-slides-foss for Java — бесплатная библиотека с лицензией MIT для создания и редактирования файлов PowerPoint .pptx — без необходимости Microsoft Office, доступна в Maven Central.
Пошаговое руководство
Шаг 1: Добавьте зависимость Maven
Добавьте зависимость в ваш pom.xml (требуется Java 21 или новее):
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Проверьте, что пакет правильно разрешается, собрав проект:
mvn dependency:resolveШаг 2: Импортировать необходимые классы
Импортируйте необходимые классы для загрузки презентаций и сохранения:
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.ShapeType;
import org.aspose.slides.foss.FillType;Шаг 3: Создать презентацию
Создайте Presentation без аргументов, чтобы начать с одного пустого слайда. Всегда используйте
try-with-resources, чтобы гарантировать освобождение внутренних ресурсов:
import org.aspose.slides.foss.Presentation;
try (Presentation prs = new Presentation()) {
System.out.println("Slides: " + prs.getSlides().size());
prs.save("new_presentation.pptx");
}Шаг 4: Добавить форму с текстом
Используйте slide.getShapes().addAutoShape(), чтобы вставить прямоугольник, затем вызовите addTextFrame()
чтобы добавить текстовое содержимое:
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.NullableBool;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 400, 150
);
ITextFrame tf = shape.addTextFrame("Hello from Aspose.Slides FOSS!");
IPortionFormat fmt = tf.getParagraphs().get(0).getPortions().get(0).getPortionFormat();
fmt.setFontHeight(24);
fmt.setFontBold(NullableBool.TRUE);
prs.save("with_shape.pptx");
}Шаг 5: Применить заливку и сохранить
Установите сплошной цвет заливки для фигуры перед сохранением:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
IAutoShape shape = prs.getSlides().get(0).getShapes().addAutoShape(
ShapeType.RECTANGLE, 100, 100, 400, 200
);
shape.getFillFormat().setFillType(FillType.SOLID);
shape.getFillFormat().getSolidFillColor().setColor(new Color(70, 130, 180));
shape.addTextFrame("Styled shape");
prs.save("styled.pptx");
}Общие проблемы и решения
ClassNotFoundException for org.aspose.slides.foss.Presentation
Зависимость Maven не разрешена. Запустите mvn dependency:resolve и проверьте, что
артефакт доступен в Maven Central. Проверьте версию в pom.xml.
UnsupportedOperationException при вызове некоторых методов
Некоторые функции (диаграммы, анимации, экспорт PDF) вызывают UnsupportedOperationException
в этой версии. Проверьте раздел известных ограничений в справочнике API перед использованием
расширенных функций.
Координаты фигуры выглядят неверно
Координаты и размеры указаны в EMU (English Metric Units). Один пункт примерно
12700 EMU. Слайд по умолчанию имеет размеры 9144000 × 6858000 EMU.
Файл не найден при загрузке существующего PPTX
Укажите абсолютный путь или убедитесь, что рабочий каталог установлен правильно:
import java.nio.file.Paths;
String path = Paths.get("presentations", "existing.pptx").toAbsolutePath().toString();
try (Presentation prs = new Presentation(path)) { ... }Часто задаваемые вопросы
Требует ли aspose-slides-foss Microsoft Office?
Нет. Библиотека создает и читает файлы .pptx нативно на чистом Java без зависимости от Microsoft Office, COM‑автоматизации или Windows API.
Какие версии Java поддерживаются?
Java 21 или новее. Библиотека работает на Windows, macOS, Linux и в Docker‑контейнерах.
Библиотека бесплатна для коммерческого использования?
Да. Он выпущен под лицензией MIT. Вы можете использовать, модифицировать и распространять его для любой цели, включая коммерческие приложения.
Могу ли я загрузить существующий файл PPTX?
Да. Передайте путь к файлу в конструктор Presentation:
try (Presentation prs = new Presentation("existing.pptx")) {
System.out.println("Loaded " + prs.getSlides().size() + " slides");
prs.save("copy.pptx");
}Нужно ли явно закрывать презентацию?
Да. Presentation реализует AutoCloseable. Всегда используйте try-with-resources
(try (Presentation prs = new Presentation()) { ... }), чтобы гарантировать очистку.