Salva presentazioni in .NET

Panoramica

Open Presentations in C# descrive come utilizzare la classe Presentation per aprire una presentazione. Questo articolo spiega come creare e salvare presentazioni. La classe Presentation contiene il contenuto di una presentazione. Che tu stia creando una presentazione da zero o modificando una esistente, dovrai salvarla al termine. Con Aspose.Slides per .NET, puoi salvare in un file o in stream. Questo articolo illustra i diversi modi per salvare una presentazione.

Salva presentazioni su file

Salva una presentazione su 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.
using (Presentation presentation = new Presentation())
{
    // Esegui qualche operazione qui...

    // Salva la presentazione in un file.
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

Salva presentazioni su stream

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

// Istanzia la classe Presentation che rappresenta un file di presentazione.
using (Presentation presentation = new Presentation())
{
    using (FileStream fileStream = new FileStream("Output.pptx", FileMode.Create))
    {
        // Salva la presentazione nello stream.
        presentation.Save(fileStream, SaveFormat.Pptx);
    }
}

Salva presentazioni con un tipo di visualizzazione predefinito

Aspose.Slides ti consente di impostare la visualizzazione iniziale che PowerPoint usa quando la presentazione generata viene aperta tramite la classe ViewProperties. Imposta la proprietà LastView su un valore dell’enumerazione ViewType.

using (Presentation presentation = new Presentation())
{
    presentation.ViewProperties.LastView = ViewType.SlideMasterView;
    presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
}

Salva presentazioni nel formato Strict Office Open XML

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

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

PptxOptions options = new PptxOptions()
{
    Conformance = Conformance.Iso29500_2008_Strict
};

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

Salva presentazioni in 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 l’archivio a 65 535 (2^16‑1) file. Le estensioni del formato ZIP64 aumentano questi limiti a 2^64.

La proprietà IPptxOptions.Zip64Mode ti consente di scegliere quando utilizzare le estensioni ZIP64 durante il salvataggio di un file Office Open XML.

Questa proprietà fornisce le seguenti modalità:

  • IfNecessary usa le estensioni ZIP64 solo se la presentazione supera i limiti sopra indicati. È la modalità predefinita.
  • Never non usa mai le estensioni ZIP64.
  • Always usa sempre le estensioni ZIP64.

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

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        Zip64Mode = Zip64Mode.Always
    });
}

Salva presentazioni in formato Office Open XML con livelli di compressione

Quando lavori con presentazioni di grandi dimensioni, puoi regolare il livello di compressione per bilanciare la dimensione del file e il tempo di elaborazione. A seconda delle tue esigenze, potresti preferire una velocità di elaborazione maggiore o file di output più piccoli.

Aspose.Slides fornisce la proprietà IPptxOptions.CompressionLevel, che consente di specificare il livello di compressione da utilizzare quando si salva una presentazione in formato Office Open XML.

I seguenti livelli di compressione sono disponibili:

  • None: nessuna compressione. I file sono conservati così come sono.
  • Level1: compressione più veloce con rapporto di compressione più basso.
  • Level2: compressione più veloce con un rapporto leggermente migliore rispetto a Level1.
  • Level3: fornisce una compressione migliore rispetto a Level2 con un impatto moderato sul tempo di elaborazione.
  • Level4: fornisce una compressione migliore rispetto a Level3.
  • Level5: migliora la compressione rispetto a Level4 con ulteriore tempo di elaborazione.
  • Level6: compressione standard che offre un buon equilibrio tra velocità di elaborazione e dimensione del file. È il livello di compressione predefinito.
  • Level7: fornisce una compressione migliore rispetto a Level6 con elaborazione più lenta.
  • Level8: fornisce una compressione migliore rispetto a Level7.
  • Level9: compressione massima. Produce il file più piccolo al costo del tempo di elaborazione più lungo.

L’esempio seguente dimostra come salvare una presentazione come file PPTX senza compressione:

using (Presentation pres = new Presentation("Sample.pptx"))
{
    pres.Save("Sample-out.pptx", SaveFormat.Pptx, new PptxOptions
    {
        CompressionLevel = CompressionLevel.None
    });
}

Questo esempio mostra come salvare una presentazione come file PPTX con compressione massima:

using (Presentation pres = new Presentation("Sample.pptx"))
{
    pres.Save("Sample-level9.pptx", SaveFormat.Pptx, new PptxOptions
    {
        CompressionLevel = CompressionLevel.Level9
    });
}

Salva presentazioni senza aggiornare la miniatura

La proprietà PptxOptions.RefreshThumbnail controlla la generazione della miniatura quando si salva una presentazione in PPTX:

  • Se impostata a true, la miniatura viene aggiornata durante il salvataggio. È il valore predefinito.
  • Se impostata a false, la miniatura corrente viene conservata. Se la presentazione non ha una miniatura, non ne viene generata alcuna.

Nel codice sotto, la presentazione viene salvata in PPTX senza aggiornare la sua miniatura.

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        RefreshThumbnail = false
    });
}

Aggiornamenti di avanzamento del salvataggio in percentuale

L’interfaccia IProgressCallback è utilizzata tramite la proprietà ProgressCallback esposta dall’interfaccia ISaveOptions e dalla classe astratta SaveOptions. Assegna un’implementazione di IProgressCallback a ProgressCallback per ricevere aggiornamenti di avanzamento del salvataggio in percentuale.

I seguenti frammenti di codice mostrano come utilizzare IProgressCallback.

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

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pdf", SaveFormat.Pdf, saveOptions);
}
class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        // Usa il valore percentuale di avanzamento qui.
        int progress = Convert.ToInt32(progressValue);

        Console.WriteLine(progress + "% of the file has been converted.");
    }
}

FAQ

È supportato il “salvataggio veloce” (salvataggio incrementale) in modo che vengano scritte solo le modifiche?

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

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

No. Un’istanza di Presentation non è thread‑safe (/slides/it/net/multithreading/); salvala da un singolo thread.

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

Hyperlinks vengono preservati. I file collegati esternamente (ad es. video tramite percorsi relativi) non vengono copiati automaticamente: assicurati che i percorsi referenziati 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.