Часто задаваемые вопросы

Часто задаваемые вопросы

Часто задаваемые вопросы

Как установить Aspose.Slides FOSS?

Добавьте зависимость Maven в ваш pom.xml. Требуется 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;

Presentation prs = new Presentation();
try {
    System.out.println("Slides: " + prs.getSlides().size());
} finally {
    prs.dispose();
}

Не требуется Microsoft Office или другие системные среды выполнения.


Почему я должен вызывать dispose() на Presentation?

Класс Presentation управляет внутренними ресурсами OPC‑пакета. Если не вызвать dispose(), эти ресурсы не освобождаются, что может привести к утечкам памяти или блокировке файлов. Всегда используйте try-finally:

Presentation prs = new Presentation("input.pptx");
try {
    // work here
    prs.save("output.pptx", SaveFormat.PPTX);
} finally {
    prs.dispose();
}

В качестве альтернативы используйте try-with-resources, поскольку Presentation реализует AutoCloseable:

try (Presentation prs = new Presentation("input.pptx")) {
    prs.save("output.pptx", SaveFormat.PPTX);
}

В какие форматы файлов я могу сохранять?

Перечисление SaveFormat определяет константы для многих форматов — PPTX, PDF, HTML, SVG, JPEG, PNG и другие — для совместимости API с коммерческой редакцией. Во время выполнения в этой FOSS‑редакции все перегрузки save() игнорируют аргумент формата и всегда записывают вывод в PPTX. Передача SaveFormat.PDF компилируется корректно, но создаёт файл .pptx, а не .pdf.

import org.aspose.slides.foss.export.SaveFormat;

prs.save("output.pptx", SaveFormat.PPTX);

Экспорт в форматы, отличные от PPTX, в этой редакции недоступен. Используйте SaveFormat.PPTX для всех операций сохранения.


Могу ли я открыть .ppt (старый PowerPoint 97-2003) файлы?

Нет. Поддерживаются только файлы .pptx (Office Open XML). Унаследованный бинарный формат .ppt не обрабатывается этой библиотекой.


Как я могу получить доступ к слайдам?

Слайды — это коллекция с нулевой индексацией, доступная через prs.getSlides():

ISlide firstSlide = prs.getSlides().get(0);
int slideCount = prs.getSlides().size();

Как добавить второй слайд?

Используйте prs.getSlides().addEmptySlide() с макетом:

try (Presentation prs = new Presentation()) {
    ILayoutSlide layout = prs.getLayoutSlides().get(0);
    prs.getSlides().addEmptySlide(layout);
    ISlide slide2 = prs.getSlides().get(1);
    prs.save("two-slides.pptx", SaveFormat.PPTX);
}

Как установить цвет фона слайда?

Цвет фона слайда не поддерживается в этой версии Aspose.Slides FOSS. В этой библиотеке нет метода getBackground() в ISlide или в любом другом классе. Фон слайда фиксируется при создании презентации из шаблона. В будущей версии может быть добавлено управление фоном.


Как использовать NullableBool?

NullableBool — это три‑значный enum, используемый для свойств форматирования. Используйте NullableBool.TRUE (а не true из Java) для жирного, курсивного и подобных свойств:

import org.aspose.slides.foss.NullableBool;

fmt.setFontBold(NullableBool.TRUE);
fmt.setFontItalic(NullableBool.FALSE);

Почему установка цвета текста не оказывает эффекта?

Вы также должны установить fillType в FillType.SOLID перед назначением цвета:

import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.drawing.Color;

fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(Color.fromArgb(255, 200, 0, 0));

Могу ли я использовать диаграммы или SmartArt?

Нет. Диаграммы, SmartArt, объекты OLE, анимации, переходы, гиперссылки, макросы VBA и цифровые подписи не реализованы в этой версии и вызывают UnsupportedOperationException.


Является ли библиотека потокобезопасной?

Каждый Presentation объект независим. Создание и использование отдельных Presentation экземпляров из разных потоков безопасно, при условии, что вы не делите один Presentation объект между потоками без внешней синхронизации.


Как вставить изображение?

Прочитайте байты изображения и добавьте их в prs.getImages(), затем создайте PictureFrame:

import org.aspose.slides.foss.ShapeType;

byte[] imageData = java.nio.file.Files.readAllBytes(
    java.nio.file.Paths.get("logo.png")
);
IPPImage image = prs.getImages().addImage(imageData);
slide.getShapes().addPictureFrame(ShapeType.RECTANGLE, 50, 50, 200, 150, image);

См. также

 Русский