Kaip išsaugoti pristatymus programoje Java

Kaip išsaugoti pristatymus programoje Java

Aspose.Slides FOSS for Java saves presentations exclusively to .pptx formatas naudojant prs.save(path, SaveFormat.PPTX). Ši vadovas apima teisingą išsaugojimo modelį, išsaugojimą į kitą kelią ir dažnas su išsaugojimu susijusias klaidas.

Ž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>

Žingsnis 2: Atidaryti arba sukurti pristatymą

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

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ą

Pateikite kitą išvesties kelią, kad sukurtumėte naują failą nekeičiant originalo:

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

Šis template.pptx failas nepakitęs; customized.pptx sukuriamas (arba perrašomas, jei jau egzistuoja).


Žingsnis 5: Patikrinkite išvestį

Po to, kai try blokas baigiasi, 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. Pateikiant bet kurį kitą SaveFormat reikšmę į prs.save(path, format) tyliai išsaugo kaip PPTX — išimtis nekeliamas ir formato argumentas ignoruojamas. UnsupportedOperationException išmeta tik prs.save(ISaveOptions options), o ne formatų pagrindu paremtų perkrovimų.


Dažnos problemos ir sprendimai

java.io.IOException: Permission denied

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

Failas sukurtas, bet atrodo tuščias arba sugadintas

Užtikrinkite prs.save() kviečiamas try bloke, o ne po jo. Po to, kai try-with-resources blokas baigiasi, Presentation objektas yra išvalomas ir vėlesni kvietimai nepavyks.

UnsupportedOperationException kai išsaugoma

Tai įvyksta naudojant prs.save(ISaveOptions options) — šis ISaveOptions-paremtas perkrovimas nėra įgyvendintas. Pastaba: perduodant ne‑PPTX SaveFormat į prs.save(path, format) atlieka ne iškelia šią išimtį; 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 an 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, o visas nežinomą XML perduoda nepakitusią.


Žr. taip pat

 Lietuvių