Как да запазите презентации в 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 | Да |
| 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 излезе, the 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?
Да. 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, който не разпознава.