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
| Format | Enum‑værdi | Understøttet |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Ja |
| N/A | Nej | |
| HTML | N/A | Nej |
| SVG | N/A | Nej |
| PNG / JPEG | N/A | Nej |
| ODP (OpenDocument) | N/A | Nej |
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.