Kaip išsaugoti prezentacijas Java

Kaip išsaugoti prezentacijas Java

Aspose.Slides FOSS for Java išsaugo pristatymus tik .pptx formatu, naudodamas prs.save(path, SaveFormat.PPTX). Šiame vadove aptariamas teisingas išsaugojimo šablonas, išsaugojimas į kitą kelią ir dažnos su išsaugojimu susijusios klaidos.

Žingsnis po žingsnio vadovas

Žingsnis 1: pridėkite Maven priklausomybę

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

2 žingsnis: Atidarykite arba sukurkite pristatymą

Visada naudokite try-with-resources. Išsaugojimo iškvietimas turi būti vykdomas try bloko viduje.

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);
}

Žingsnis 3: Išsaugoti po visų modifikacijų

Įdėkite save() kvietimą kaip paskutinę komandą try bloke, po to, kai visi pakeitimai baigti.

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);
}

Žingsnis 4: Išsaugoti į kitą kelią

Nurodykite kitą išvesties kelią, kad sukurtumėte naują failą nekeisdami originalo:

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

Failas template.pptx nėra modifikuojamas; customized.pptx sukuriamas (arba perrašomas, jei jis jau egzistuoja).


Žingsnis 5: Patikrinkite išvestį

Po to, kai išeinama iš try bloko, failas yra baigtas ir uždarytas. Patikrinkite, ar jis egzistuoja:

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");

Palaikomas išsaugojimo formatas

FormatasEnum reikšmėPalaikoma
PPTX (Office Open XML)SaveFormat.PPTXTaip
PDFN/ANe
HTMLN/ANe
SVGN/ANe
PNG / JPEGN/ANe
ODP (OpenDocument)N/ANe

Tik PPTX yra visiškai palaikomas. Perduodant bet kurią kitą SaveFormat reikšmę į prs.save(path, format) tyliai išsaugoma kaip PPTX — išimčių nekeliamas ir formato argumentas ignoruojamas. UnsupportedOperationException išmeta tik prs.save(ISaveOptions options), o ne formatų pagrindu paremtus perkrovimus.


Dažnos problemos ir sprendimai

java.io.IOException: Permission denied

Išvesties failas yra atvertas kitoje programoje (pvz., PowerPoint turi atvertą failą). Prieš išsaugant uždarykite failą kitose programose.

Failas sukurtas, bet atrodo tuščias arba sugadintas

Įsitikinkite, kad prs.save() yra iškviečiamas try bloke, o ne po jo. Po to, kai try‑with‑resources blokas baigiasi, Presentation objektas yra išmetamas ir vėlesni kvietimai nepavyks.

UnsupportedOperationException išsaugant

Tai įvyksta naudojant prs.save(ISaveOptions options)ISaveOptions pagrindu veikiantis perkrovimas nėra įgyvendintas. Pastaba: perduodant ne‑PPTX SaveFormat į prs.save(path, format) nemetama šios išimties; ji tyliai išsaugo kaip PPTX.


Dažnai užduodami klausimai

Ar galiu išsaugoti į tą patį failą, kurį atidariau?

Taip. Išsaugant į tą patį kelią, originalus failas perrašomas:

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

Ar galiu išsaugoti į OutputStream?

Taip. save() metodas priima OutputStream:

import java.io.FileOutputStream;

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

Ar išsaugojimas išsaugo turinį, kurio nekeitiau?

Taip. Nežinomos XML dalys iš originalaus failo išsaugomos nepakitusiomis. Biblioteka serializuoja tik tas dokumento modelio dalis, kurias supranta, ir perduoda bet kokią XML, kurios nesupranta.


Žr. taip pat

 Lietuvių