Come salvare le presentazioni in Java

Come salvare le presentazioni in Java

Aspose.Slides FOSS per Java salva le presentazioni esclusivamente nel formato .pptx utilizzando prs.save(path, SaveFormat.PPTX). Questa guida copre il modello di salvataggio corretto, il salvataggio in un percorso diverso e gli errori comuni relativi al salvataggio.

Guida passo-passo

Passo 1: Aggiungi la dipendenza Maven

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

Passo 2: Apri o crea una presentazione

Usa sempre try-with-resources. La chiamata di salvataggio deve avvenire all’interno del blocco 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);
}

Passo 3: Salva dopo tutte le modifiche

Posiziona la chiamata save() come ultima istruzione all’interno del blocco try, dopo che tutte le modifiche sono state completate.

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

Passo 4: Salva in un percorso diverso

Specifica un percorso di output diverso per creare un nuovo file senza modificare l’originale:

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

Il file template.pptx non viene modificato; customized.pptx viene creato (o sovrascritto se esiste già).


Passo 5: Verifica l’output

Dopo l’uscita dal blocco try, il file è completo e chiuso. Verifica che esista:

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

Formato di salvataggio supportato

FormatoValore EnumSupportato
PPTX (Office Open XML)SaveFormat.PPTX
PDFN/ANo
HTMLN/ANo
SVGN/ANo
PNG / JPEGN/ANo
ODP (OpenDocument)N/ANo

Solo PPTX è pienamente supportato. Passare qualsiasi altro valore SaveFormat a prs.save(path, format) salva silenziosamente come PPTX — non viene generata alcuna eccezione e l’argomento del formato viene ignorato. UnsupportedOperationException viene generata solo da prs.save(ISaveOptions options), non dalle overload basate sul formato.


Problemi comuni e soluzioni

java.io.IOException: Permission denied

Il file di output è aperto in un’altra applicazione (ad esempio, PowerPoint ha il file aperto). Chiudi il file nelle altre applicazioni prima di salvare.

Il file viene creato ma appare vuoto o corrotto

Assicurati che prs.save() sia chiamato all’interno del blocco try, non dopo di esso. Dopo l’uscita dal blocco try‑with‑resources, l’oggetto Presentation viene eliminato e le chiamate successive falliranno.

UnsupportedOperationException quando si salva

Questo si verifica quando si utilizza prs.save(ISaveOptions options) — il sovraccarico basato su ISaveOptions non è implementato. Nota: passare un SaveFormat non PPTX a prs.save(path, format) non genera questa eccezione; salva silenziosamente come PPTX.


Domande Frequenti

Posso salvare nello stesso file che ho aperto?

Sì. Il salvataggio nello stesso percorso sovrascrive il file originale:

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

Posso salvare su un OutputStream?

Sì. Il metodo save() accetta un OutputStream:

import java.io.FileOutputStream;

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

Il salvataggio preserva il contenuto che non ho modificato?

Sì. Le parti XML sconosciute del file originale vengono preservate alla lettera. La libreria serializza solo le parti del modello di documento che comprende e passa attraverso qualsiasi XML non riconosciuto.


Vedi anche

 Italiano