Ouvrir des présentations dans .NET

Vue d’ensemble

Au-delà de la création de présentations PowerPoint à partir de zéro, Aspose.Slides vous permet également d’ouvrir des présentations existantes. Après avoir chargé une présentation, vous pouvez récupérer des informations à son sujet, modifier le contenu des diapositives, ajouter de nouvelles diapositives, supprimer celles existantes, etc.

Ouvrir des présentations

Pour ouvrir une présentation existante, créez une instance de la classe Presentation et transmettez le chemin du fichier à son constructeur.

L’exemple C# suivant montre comment ouvrir une présentation et obtenir son nombre de diapositives :

// Instanciez la classe Presentation et transmettez un chemin de fichier à son constructeur.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // Affichez le nombre total de diapositives dans la présentation.
    System.Console.WriteLine(presentation.Slides.Count);
}

Ouvrir des présentations protégées par mot de passe

Lorsque vous devez ouvrir une présentation protégée par mot de passe, transmettez le mot de passe via la propriété Password de la classe LoadOptions pour la déchiffrer et la charger. Le code C# suivant illustre cette opération :

LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
using (Presentation presentation = new Presentation("Sample.pptx", loadOptions))
{
    // Effectuez des opérations sur la présentation déchiffrée.
}

Ouvrir de grandes présentations

Aspose.Slides propose des options—en particulier la propriété BlobManagementOptions de la classe LoadOptions—pour vous aider à charger de grandes présentations.

Le code C# suivant montre comment charger une grande présentation (par exemple, 2 Go) :

const string filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = 
    {
        // Choisissez le comportement KeepLocked - le fichier de présentation restera verrouillé pendant toute la durée de 
        // l'instance Presentation, mais il n'est pas nécessaire de le charger en mémoire ou de le copier dans un fichier temporaire.
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024 // 10 Mo
    }
};

using (Presentation presentation = new Presentation(filePath, loadOptions))
{
    // La grande présentation a été chargée et peut être utilisée, tandis que la consommation mémoire reste faible.

    // Apportez des modifications à la présentation.
    presentation.Slides[0].Name = "Large presentation";

    // Enregistrez la présentation dans un autre fichier. La consommation mémoire reste faible pendant cette opération.
    presentation.Save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Ne faites pas cela ! Une exception d'E/S sera levée car le fichier est verrouillé jusqu'à ce que l'objet Presentation soit libéré.
    File.Delete(filePath);
}

// Il est correct de le faire ici. Le fichier source n'est plus verrouillé par l'objet Presentation.
File.Delete(filePath);

Contrôler les ressources externes

Aspose.Slides fournit l’interface IResourceLoadingCallback qui vous permet de gérer les ressources externes. Le code C# suivant montre comment utiliser l’interface 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
            {
                // Charger une image de substitution.
                byte[] imageData = File.ReadAllBytes("aspose-logo.jpg");
                args.SetData(imageData);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // Définir une URL de substitution.
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // Ignorer toutes les autres images.
        return ResourceLoadingAction.Skip;
    }
}

Charger des présentations sans objets binaires intégrés

Une présentation PowerPoint peut contenir les types d’objets binaires intégrés suivants :

En utilisant la propriété ILoadOptions.DeleteEmbeddedBinaryObjects, vous pouvez charger une présentation sans aucun objet binaire intégré.

Cette propriété est utile pour éliminer le contenu binaire potentiellement malveillant. Le code C# suivant montre comment charger une présentation sans aucun contenu binaire intégré :

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

using (Presentation presentation = new Presentation("malware.ppt", loadOptions))
{
    // Effectuer des opérations sur la présentation.
}

FAQ

Comment savoir si un fichier est corrompu et ne peut pas être ouvert ?

Une exception de validation d’analyse/format sera levée lors du chargement. De telles erreurs mentionnent souvent une structure ZIP invalide ou des enregistrements PowerPoint corrompus.

Que se passe-t-il si les polices requises sont manquantes lors de l’ouverture ?

Le fichier s’ouvrira, mais lors du rendu/export ultérieur, des polices peuvent être substituées. Configurez les substitutions de polices ou ajoutez les polices requises à l’environnement d’exécution.

Qu’en est-il des médias intégrés (vidéo/audio) lors de l’ouverture ?

Ils deviennent disponibles en tant que ressources de la présentation. Si les médias sont référencés via des chemins externes, assurez‑vous que ces chemins sont accessibles dans votre environnement ; sinon le rendu/export peut omettre les médias.