Sådan gemmes præsentationer i Java

Sådan gemmes præsentationer i Java

Aspose.Slides FOSS for Java saves presentations exclusively to .pptx format ved brug af prs.save(path, SaveFormat.PPTX). Denne vejledning dækker det korrekte gemmemønster, gemning til en anden sti og almindelige fejl relateret til gemning.

Trin-for-trin guide

Trin 1: Tilføj Maven‑afhængigheden

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

Trin 2: Åbn eller opret en præsentation

Brug altid try-with-resources. Gemmekaldet skal foregå inden for try-blokken.

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

Trin 3: Gem efter alle ændringer

Placér save() kald som den sidste erklæring inde i try-blokken, efter at alle ændringer er fuldført.

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

Trin 4: Gem til en anden sti

Angiv en anden outputsti for at oprette en ny fil uden at ændre den oprindelige:

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

Den template.pptx filen er ikke ændret; customized.pptx oprettes (eller overskrives, hvis den allerede findes).


Trin 5: Verificér outputtet

Når try-blokken afsluttes, er filen færdig og lukket. Kontroller, at den findes:

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

Understøttet gemmeformat

FormatEnum‑værdiUnderstøttet
PPTX (Office Open XML)SaveFormat.PPTXJa
PDFN/ANej
HTMLN/ANej
SVGN/ANej
PNG / JPEGN/ANej
ODP (OpenDocument)N/ANej

Kun PPTX er fuldt understøttet. At videregive enhver anden SaveFormat værdi til prs.save(path, format) gemmer stille som PPTX — der kastes ingen undtagelse, og formatargumentet ignoreres. UnsupportedOperationException kastes kun af prs.save(ISaveOptions options), ikke af de formatbaserede overbelastninger.


Almindelige problemer og løsninger

java.io.IOException: Permission denied

Outputfilen er åben i en anden applikation (f.eks. har PowerPoint filen åben). Luk filen i andre programmer før du gemmer.

Filen oprettes, men fremstår som tom eller korrupt

Sørg for prs.save() kaldes inden for try-blokken, ikke efter den. Når try-with-resources-blokken afsluttes, bliver Presentation objektet disponeret, og efterfølgende kald vil fejle.

UnsupportedOperationException ved gemning

Dette sker, når du bruger prs.save(ISaveOptions options) — den ISaveOptions-baserede overbelastning er ikke implementeret. Bemærk: at videregive en ikke-PPTX SaveFormat til prs.save(path, format) gør ikke kaste denne undtagelse; den gemmer stille som PPTX.


Ofte stillede spørgsmål

Kan jeg gemme til den samme fil, som jeg åbnede?

Ja. Gemning til den samme sti overskriver den oprindelige fil:

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

Kan jeg gemme til en OutputStream?

Ja. Den save() metode accepterer en OutputStream:

import java.io.FileOutputStream;

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

Bevarer lagring indhold, jeg ikke har ændret?

Ja. Ukendte XML‑dele fra den oprindelige fil bevares ordret. Biblioteket serialiserer kun de dele af dokumentmodellen, det forstår, og videregiver al XML, det ikke genkender.


Se også

 Dansk