Aprire presentazioni in .NET

Introduzione

Oltre a creare presentazioni PowerPoint da zero, Aspose.Slides consente anche di aprire presentazioni esistenti. Dopo aver caricato una presentazione, è possibile recuperare informazioni al riguardo, modificare il contenuto delle diapositive, aggiungere nuove diapositive, rimuovere quelle esistenti e molto altro.

Aprire presentazioni

Per aprire una presentazione esistente, istanzia la classe Presentation e passa il percorso del file al suo costruttore.

Il seguente esempio C# mostra come aprire una presentazione e ottenere il numero di diapositive:

// Istanzia la classe Presentation e passa un percorso di file al suo costruttore.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // Stampa il numero totale di diapositive nella presentazione.
    System.Console.WriteLine(presentation.Slides.Count);
}

Aprire presentazioni protette da password

Quando è necessario aprire una presentazione protetta da password, passa la password tramite la proprietà Password della classe LoadOptions per decrittarla e caricarla. Il seguente codice C# dimostra questa operazione:

LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
using (Presentation presentation = new Presentation("Sample.pptx", loadOptions))
{
    // Esegui operazioni sulla presentazione decrittata.
}

Aprire presentazioni di grandi dimensioni

Aspose.Slides fornisce opzioni—in particolare la proprietà BlobManagementOptions nella classe LoadOptions—per aiutarti a caricare presentazioni di grandi dimensioni.

Il seguente codice C# dimostra come caricare una presentazione di grandi dimensioni (ad esempio, 2 GB):

const string filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = 
    {
        // Scegli il comportamento KeepLocked—il file della presentazione resterà bloccato per tutta la durata di 
        // l'istanza Presentation, ma non è necessario caricarlo in memoria né copiarlo in un file temporaneo.
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024 // 10 MB
    }
};

using (Presentation presentation = new Presentation(filePath, loadOptions))
{
    // La presentazione di grandi dimensioni è stata caricata e può essere usata, mentre il consumo di memoria rimane basso.

    // Apporta modifiche alla presentazione.
    presentation.Slides[0].Name = "Large presentation";

    // Salva la presentazione in un altro file. Il consumo di memoria rimane basso durante questa operazione.
    presentation.Save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Non farlo! Verrà sollevata un'eccezione I/O perché il file è bloccato fino a quando l'oggetto Presentation non viene eliminato.
    File.Delete(filePath);
}

// È corretto farlo qui. Il file sorgente non è più bloccato dall'oggetto Presentation.
File.Delete(filePath);

Controllare le risorse esterne

Aspose.Slides fornisce l’interfaccia IResourceLoadingCallback che consente di gestire le risorse esterne. Il seguente codice C# mostra come utilizzare l’interfaccia IResourceLoadingCallback:

LoadOptions loadOptions = new LoadOptions();
loadOptions.ResourceLoadingCallback = new ImageLoadingHandler();

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
public class ImageLoadingHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
    {
        if (args.OriginalUri.EndsWith(".jpg"))
        {
            try
            {
                // Carica un'immagine sostitutiva.
                byte[] imageData = File.ReadAllBytes("aspose-logo.jpg");
                args.SetData(imageData);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // Imposta un URL sostitutivo.
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // Salta tutte le altre immagini.
        return ResourceLoadingAction.Skip;
    }
}

Caricare presentazioni senza oggetti binari incorporati

Una presentazione PowerPoint può contenere i seguenti tipi di oggetti binari incorporati:

Utilizzando la proprietà ILoadOptions.DeleteEmbeddedBinaryObjects, è possibile caricare una presentazione senza alcun oggetto binario incorporato.

Questa proprietà è utile per rimuovere contenuti binari potenzialmente dannosi. Il seguente codice C# dimostra come caricare una presentazione senza alcun contenuto binario incorporato:

LoadOptions loadOptions = new LoadOptions()
{
    DeleteEmbeddedBinaryObjects = true
}

using (Presentation presentation = new Presentation("malware.ppt", loadOptions))
{
    // Esegui operazioni sulla presentazione.
}

FAQ

Come posso capire se un file è danneggiato e non può essere aperto?

Durante il caricamento verrà generata un’eccezione di validazione/parsing del formato. Questi errori spesso indicano una struttura ZIP non valida o record PowerPoint danneggiati.

Cosa succede se i font richiesti mancano durante l’apertura?

Il file si aprirà, ma successivamente la renderizzazione/esportazione potrebbe sostituire i font. Configura le sostituzioni dei font o aggiungi i font richiesti all’ambiente di runtime.

Cosa succede ai media incorporati (video/audio) durante l’apertura?

Diventano disponibili come risorse della presentazione. Se i media sono referenziati tramite percorsi esterni, assicurati che tali percorsi siano accessibili nel tuo ambiente; altrimenti la renderizzazione/esportazione potrebbe omettere i media.