Як зберегти презентації у Java

Як зберегти презентації у Java

Aspose.Slides FOSS for Java saves presentations exclusively to .pptx формат за допомогою prs.save(path, SaveFormat.PPTX). Цей посібник охоплює правильний шаблон збереження, збереження в інший шлях та типові помилки, пов’язані зі збереженням.

Покроковий посібник

Крок 1: Додайте залежність Maven

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

Крок 2: Відкрити або створити презентацію

Завжди використовуйте try-with-resources. Виклик збереження має відбуватися всередині блоку try.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

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

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

Крок 3: Зберегти після всіх змін

Розмістіть save() виклик як останню інструкцію всередині блоку try, після завершення всіх змін.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 300, 100
    );
    shape.addTextFrame("Hello, World!");
    prs.save("output.pptx", SaveFormat.PPTX);
}

Крок 4: Зберегти за іншим шляхом

Передайте інший шлях виводу, щоб створити новий файл без зміни оригіналу:

try (Presentation prs = new Presentation("template.pptx")) {
    // modify ...
    prs.save("customized.pptx", SaveFormat.PPTX);
}

Цей template.pptx файл не змінено; customized.pptx створюється (або перезаписується, якщо вже існує).


Крок 5: Перевірте результат

Після виходу з блоку try файл завершено і закрито. Перевірте, чи існує файл:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

Path output = Paths.get("output.pptx");
System.out.println("Saved: " + Files.exists(output)
    + ", size: " + Files.size(output) + " bytes");

Підтримуваний формат збереження

ФорматЗначення перерахуванняПідтримується
PPTX (Office Open XML)SaveFormat.PPTXТак
PDFN/AНі
HTMLN/AНі
SVGN/AНі
PNG / JPEGN/AНі
ODP (OpenDocument)N/AНі

Лише PPTX повністю підтримується. Передача будь-якого іншого SaveFormat значення до prs.save(path, format) тихо зберігає у форматі PPTX — жодного виключення не викидається, і аргумент формату ігнорується. UnsupportedOperationException викидається лише prs.save(ISaveOptions options), а не форматно‑орієнтованими перевантаженнями.


Типові проблеми та їх вирішення

java.io.IOException: Permission denied

Вихідний файл відкрито в іншій програмі (наприклад, PowerPoint). Закрийте файл в інших програмах перед збереженням.

Файл створено, але він порожній або пошкоджений

Переконайтеся prs.save() викликається всередині блоку try, а не після нього. Після виходу з блоку try-with-resources, Presentation об’єкт звільняється, і подальші виклики завершаться помилкою.

UnsupportedOperationException при збереженні

Це трапляється під час використання prs.save(ISaveOptions options) — це ISaveOptions-based перевантаження не реалізовано. Примітка: передача не-PPTX SaveFormat до prs.save(path, format) виконує не викиньте це виключення; воно безшумно зберігає у форматі PPTX.


Часті запитання

Чи можу я зберегти у той самий файл, який відкрив?

Так. Збереження у той самий шлях перезаписує оригінальний файл:

try (Presentation prs = new Presentation("deck.pptx")) {
    // modify ...
    prs.save("deck.pptx", SaveFormat.PPTX);  // overwrites original
}

Чи можу я зберігати у OutputStream?

Так. The save() метод приймає OutputStream:

import java.io.FileOutputStream;

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

Чи зберігає збереження вміст, який я не змінював?

Так. Невідомі XML‑частини з оригінального файлу зберігаються дослівно. Бібліотека лише серіалізує ті частини моделі документа, які вона розуміє, і пропускає будь‑який XML, який не розпізнає.


Див. також

 Українська