Salvare presentazioni in Java

Panoramica

Open Presentations in Java ha descritto come usare la classe Presentation per aprire una presentazione. Questo articolo spiega come creare e salvare le presentazioni. La classe Presentation contiene il contenuto di una presentazione. Che tu stia creando una presentazione da zero o modificando una esistente, vorrai salvarla quando hai finito. Con Aspose.Slides per Java, puoi salvare in un file o in uno stream. Questo articolo spiega i diversi modi per salvare una presentazione.

Salva le presentazioni in file

Salva una presentazione su un file chiamando il metodo save della classe Presentation. Passa il nome del file e il formato di salvataggio al metodo. L’esempio seguente mostra come salvare una presentazione con Aspose.Slides.

// Istanzia la classe Presentation che rappresenta un file di presentazione.
Presentation presentation = new Presentation();
try {
    // Esegui qualche operazione qui...

    // Salva la presentazione su un file.
    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Salva le presentazioni su stream

Puoi salvare una presentazione su uno stream passando uno stream di output al metodo save della classe Presentation. Una presentazione può essere scritta su molti tipi di stream. Nell’esempio seguente, creiamo una nuova presentazione e la salviamo su uno stream di file.

// Istanzia la classe Presentation che rappresenta un file di presentazione.
Presentation presentation = new Presentation();
try {
    OutputStream fileStream = new FileOutputStream("Output.pptx");
    try {
        // Salva la presentazione sullo stream.
        presentation.save(fileStream, SaveFormat.Pptx);
    } finally {
        fileStream.close();
    }
} finally {
    presentation.dispose();
}

Salva le presentazioni con un tipo di visualizzazione predefinito

Aspose.Slides ti consente di impostare la visualizzazione iniziale che PowerPoint utilizza quando la presentazione generata viene aperta tramite la classe ViewProperties. Usa il metodo setLastView con un valore dell’enumerazione ViewType.

Presentation presentation = new Presentation();
try {
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
    presentation.save("SlideMasterView.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Salva le presentazioni nel formato Strict Office Open XML

Aspose.Slides ti permette di salvare una presentazione nel formato Strict Office Open XML. Usa la classe PptxOptions e imposta la sua proprietà conformance durante il salvataggio. Se imposti Conformance.Iso29500_2008_Strict, il file di output viene salvato nel formato Strict Office Open XML.

L’esempio seguente crea una presentazione e la salva nel formato Strict Office Open XML.

PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);

// Istanzia la classe Presentation che rappresenta un file di presentazione.
Presentation presentation = new Presentation();
try {
    // Salva la presentazione nel formato Strict Office Open XML.
    presentation.save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Salva le presentazioni nel formato Office Open XML in modalità Zip64

Un file Office Open XML è un archivio ZIP che impone limiti di 4 GB (2^32 byte) sulla dimensione non compressa di qualsiasi file, sulla dimensione compressa di qualsiasi file e sulla dimensione totale dell’archivio, e limita inoltre l’archivio a 65 535 (2^16‑1) file. Le estensioni del formato ZIP64 aumentano questi limiti a 2^64.

Il metodo IPptxOptions.setZip64Mode ti consente di scegliere quando utilizzare le estensioni del formato ZIP64 durante il salvataggio di un file Office Open XML.

Questo metodo può essere usato con le seguenti modalità:

  • IfNecessary usa le estensioni del formato ZIP64 solo se la presentazione supera le limitazioni sopra. Questo è la modalità predefinita.
  • Never non utilizza mai le estensioni del formato ZIP64.
  • Always utilizza sempre le estensioni del formato ZIP64.

Il codice seguente dimostra come salvare una presentazione come PPTX con le estensioni ZIP64 abilitate:

PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setZip64Mode(Zip64Mode.Always);

Presentation presentation = new Presentation("Sample.pptx");
try {
    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

Salva le presentazioni senza aggiornare la miniatura

Il metodo PptxOptions.setRefreshThumbnail controlla la generazione della miniatura quando si salva una presentazione in PPTX:

  • Se impostato a true, la miniatura viene aggiornata durante il salvataggio. Questo è il valore predefinito.
  • Se impostato a false, la miniatura corrente viene preservata. Se la presentazione non ha una miniatura, non ne viene generata alcuna.

Nel codice seguente, la presentazione è salvata in PPTX senza aggiornare la sua miniatura.

PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setRefreshThumbnail(false);

Presentation presentation = new Presentation("Sample.pptx");
try {
    presentation.save("Output.pptx", SaveFormat.Pptx, pptxOptions);
}
finally {
    presentation.dispose();
}

Salva gli aggiornamenti di progresso in percentuale

L’interfaccia IProgressCallback viene utilizzata tramite il metodo setProgressCallback esposto dall’interfaccia ISaveOptions e dalla classe astratta SaveOptions. Assegna un’implementazione di IProgressCallback con setProgressCallback per ricevere aggiornamenti di avanzamento del salvataggio in percentuale.

I seguenti snippet di codice mostrano come usare IProgressCallback.

ISaveOptions saveOptions = new PdfOptions();
saveOptions.setProgressCallback(new ExportProgressHandler());

Presentation presentation = new Presentation("Sample.pptx");
try {
    presentation.save("Output.pdf", SaveFormat.Pdf, saveOptions);
} finally {
    presentation.dispose();
}
class ExportProgressHandler implements IProgressCallback {
    public void reporting(double progressValue) {
        // Usa qui il valore percentuale di avanzamento.
        int progress = (int) progressValue;

        System.out.println(progress + "% of the file has been converted.");
    }
}

FAQ

Il “salvataggio rapido” (salvataggio incrementale) è supportato in modo che vengano scritte solo le modifiche?

No. Il salvataggio crea l’intero file di destinazione ogni volta; il “salvataggio rapido” incrementale non è supportato.

È sicuro da thread salvare la stessa istanza di Presentation da più thread?

No. Un’istanza di Presentation non è thread‑safe; salvala da un singolo thread.

Cosa succede ai collegamenti ipertestuali e ai file collegati esternamente durante il salvataggio?

I collegamenti ipertestuali sono conservati. I file collegati esternamente (ad esempio video tramite percorsi relativi) non vengono copiati automaticamente — assicurati che i percorsi di riferimento rimangano accessibili.

Posso impostare/salvare i metadati del documento (Autore, Titolo, Azienda, Data)?

Sì. Le proprietà del documento standard sono supportate e verranno scritte nel file al momento del salvataggio.