Com desar presentacions en Java
Aspose.Slides FOSS for Java guarda les presentacions exclusivament en format .pptx utilitzant prs.save(path, SaveFormat.PPTX). Aquesta guia cobreix el patró correcte de desament, desar a una ruta diferent i els errors comuns relacionats amb el desament.
Guia pas a pas
Pas 1: Afegeix la dependència Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Pas 2: Obre o crea una presentació
Sempre utilitzeu try-with-resources. La crida de desar ha de ser dins del bloc 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);
}Pas 3: Desa després de totes les modificacions
Col·loca la crida save() com a última instrucció dins del bloc try, després que totes les modificacions estiguin completes.
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);
}Pas 4: Desar a una ruta diferent
Passeu un camí d’eixida diferent per crear un fitxer nou sense modificar l’original:
try (Presentation prs = new Presentation("template.pptx")) {
// modify ...
prs.save("customized.pptx", SaveFormat.PPTX);
}El fitxer template.pptx no es modifica; customized.pptx es crea (o es sobreescriu si ja existeix).
Pas 5: Verifica la sortida
Després que el bloc try surti, el fitxer està complet i tancat. Comproveu que existeix:
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");Formats de desament compatibles
| Format | Valor Enum | Admet |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Sí |
| N/A | No | |
| HTML | N/A | No |
| SVG | N/A | No |
| PNG / JPEG | N/A | No |
| ODP (OpenDocument) | N/A | No |
Només PPTX és totalment compatible. Passar qualsevol altre SaveFormat valor a prs.save(path, format) guarda silenciosament com a PPTX — no es llança cap excepció i l’argument de format s’ignora. UnsupportedOperationException només es llança per prs.save(ISaveOptions options), no pels sobrecàrregues basades en format.
Problemes comuns i solucions
java.io.IOException: Permission denied
El fitxer de sortida està obert en una altra aplicació (p. ex., PowerPoint té el fitxer obert). Tanqueu el fitxer en altres aplicacions abans de desar.
El fitxer es crea però apareix buit o corromput
Assegureu-vos que prs.save() es cridi dins del bloc try, no després d’aquest. Un cop el bloc try-with-resources finalitza, l’objecte Presentation es disposa i les crides posteriors fallaran.
UnsupportedOperationException en desar
Això ocorre quan s’utilitza prs.save(ISaveOptions options) — la sobrecàrrega basada en ISaveOptions no està implementada. Nota: passar un SaveFormat que no sigui PPTX a prs.save(path, format) no genera aquesta excepció; es desa silenciosament com a PPTX.
Preguntes freqüents
Puc desar al mateix fitxer que vaig obrir?
Sí. Desar al mateix camí sobrescriu el fitxer original:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}Puc desar a un OutputStream?
Sí. El mètode save() accepta un OutputStream:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}Desar conserva el contingut que no he modificat?
Sí. Les parts XML desconegudes del fitxer original es conserven literalment. La biblioteca només serialitza les parts del model de document que entén i passa a través de qualsevol XML que no reconeix.