Як зберігати презентації у Java
Aspose.Slides FOSS for Java зберігає презентації виключно у формат .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. Виклик 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;
// 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");Підтримуваний формат збереження
| Формат | Значення Enum | Підтримується |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Так |
| N/A | Ні | |
| HTML | N/A | Ні |
| SVG | N/A | Ні |
| PNG / JPEG | N/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 не реалізовано. Примітка: передача не‑PPTX SaveFormat у prs.save(path, format) не викликає цей виняток; вона безшумно зберігає як PPTX.
Поширені запитання
Чи можу я зберегти у той самий файл, який відкрив?
Так. Збереження у той самий шлях перезаписує оригінальний файл:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}Чи можу я зберегти у OutputStream?
Так. Метод save() приймає OutputStream:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}Чи збереження зберігає вміст, який я не змінював?
Так. Невідомі XML‑частини з оригінального файлу зберігаються дослівно. Бібліотека лише серіалізує ті частини моделі документа, які вона розуміє, і пропускає будь‑який XML, який вона не розпізнає.