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


Вижте също

 Български