Aprire presentazioni in .NET
Introduzione
Aspose.Slides for .NET può caricare presentazioni PowerPoint e OpenDocument da file e flussi. Dopo che una presentazione è stata caricata, è possibile ispezionarne la struttura, modificare le diapositive, gestire le risorse e salvarla nel formato originale o in un altro formato supportato.
Il comportamento di caricamento può essere personalizzato tramite la classe LoadOptions. Ad esempio, è possibile fornire una password di apertura, mantenere i grandi oggetti binari fuori dalla memoria gestita, controllare le risorse esterne o omettere i dati binari incorporati.
Aprire le presentazioni
Per aprire una presentazione esistente, passi il percorso del file al costruttore Presentation. Disponi della presentazione dopo l’uso affinché i handle dei file, i dati temporanei e le altre risorse vengano rilasciati tempestivamente.
Il seguente esempio C# mostra come aprire una presentazione e ottenere il numero di diapositive:
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample.pptx");
Console.WriteLine("Slide count: " + presentation.Slides.Count);
Aprire presentazioni protette da password
Una password di apertura cripta il contenuto della presentazione. Per caricare l’intera presentazione, assegna la password corretta a LoadOptions.Password e passa le opzioni al costruttore Presentation. Il caricamento fallisce quando la password è assente o errata.
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
Per la rilevazione, la validazione e i flussi di lavoro di crittografia delle password, vedi Password-Protect Presentations. Se una presentazione crittata è stata salvata deliberatamente con proprietà di documento pubbliche, tali proprietà possono essere lette senza password; vedi Manage Presentation Properties.
Aprire presentazioni di grandi dimensioni
LoadOptions.BlobManagementOptions controlla come Aspose.Slides gestisce oggetti binari di grandi dimensioni come immagini, audio e video. Puoi mantenere il file sorgente bloccato, consentire file temporanei e limitare la quantità di dati BLOB trattenuti in memoria.
Il seguente codice C# dimostra il caricamento di una presentazione di grandi dimensioni (ad esempio, 2 GB):
using Aspose.Slides;
using Aspose.Slides.Export;
const string filePath = "large-presentation.pptx";
var loadOptions = new LoadOptions
{
BlobManagementOptions =
{
PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
IsTemporaryFilesAllowed = true,
MaxBlobsBytesInMemory = 10 * 1024 * 1024
}
};
using var presentation = new Presentation(filePath, loadOptions);
presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);
Nota
Con PresentationLockingBehavior.KeepLocked, il file sorgente rimane bloccato fino a quando l’oggetto Presentation non viene eliminato. Non spostare, sovrascrivere o eliminare il file sorgente mentre quell’oggetto è attivo.
Aspose.Slides può copiare i contenuti di un flusso di input durante il caricamento. Per presentazioni di grandi dimensioni, un percorso di file è quindi generalmente più efficiente di un flusso. Consulta Manage BLOBs per ulteriori opzioni di archiviazione e gestione della memoria.
Controllare le risorse esterne
LoadOptions.ResourceLoadingCallback accetta un’implementazione di IResourceLoadingCallback. Il callback può fornire dati sostitutivi, reindirizzare una risorsa, utilizzare il loader predefinito o saltare la risorsa. Questo è utile quando le presentazioni contengono immagini esterne che devono essere risolte secondo regole di sicurezza o archiviazione specifiche dell’applicazione.
using System;
using System.IO;
using Aspose.Slides;
internal static class OpenPresentationExample
{
private static void Main()
{
var loadOptions = new LoadOptions
{
ResourceLoadingCallback = new ImageLoadingHandler()
};
using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
}
private sealed class ImageLoadingHandler : IResourceLoadingCallback
{
public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
{
var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
if (!isJpeg || !File.Exists("approved-image.jpg"))
{
return ResourceLoadingAction.Skip;
}
var imageData = File.ReadAllBytes("approved-image.jpg");
args.SetData(imageData);
return ResourceLoadingAction.UserProvided;
}
}
}
Caricare presentazioni senza oggetti binari incorporati
Una presentazione può contenere dati binari incorporati che un’applicazione non necessita o non desidera mantenere. Esempi includono:
- progetti VBA, disponibili tramite IPresentation.VbaProject;
- dati OLE incorporati, disponibili tramite IOleEmbeddedDataInfo.EmbeddedFileData;
- dati di controlli ActiveX, disponibili tramite IControl.ActiveXControlBinary.
Imposta LoadOptions.DeleteEmbeddedBinaryObjects su true per rimuovere questi dati binari durante il caricamento. Salva la presentazione caricata per conservare il risultato sanificato.
Questa opzione riduce l’esposizione a payload incorporati indesiderati, ma non è un sistema completo di rilevamento malware o di sanificazione dei contenuti.
using Aspose.Slides;
using Aspose.Slides.Export;
var loadOptions = new LoadOptions
{
DeleteEmbeddedBinaryObjects = true
};
using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);
presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);
FAQ
Come posso capire se un file è corrotto e non può essere aperto?
Aspose.Slides genera un’eccezione di parsing o di formato durante il caricamento. Gestisci quel tipo di errore separatamente da quello di password errata in modo che l’applicazione possa segnalare la causa con precisione.
Cosa succede se mancano i font richiesti?
La presentazione può comunque essere caricata, ma il rendering e l’esportazione potrebbero sostituire i font. Puoi configurare la sostituzione dei font o fornire font personalizzati per rendere l’output più prevedibile.
Il caricamento di una presentazione carica anche i media incorporati?
Audio e video incorporati diventano disponibili tramite il modello a oggetti della presentazione. Le risorse esterne vengono risolte secondo il comportamento configurato per il caricamento delle risorse e potrebbero non essere disponibili se le loro posizioni non sono accessibili.