Ouvrir une Présentation - API PowerPoint C++

En plus de créer des présentations PowerPoint à partir de zéro, Aspose.Slides vous permet d’ouvrir des présentations existantes. Après avoir chargé une présentation, vous pouvez obtenir des informations sur la présentation, modifier la présentation (contenu de ses diapositives), ajouter de nouvelles diapositives ou en supprimer des existantes, etc.

Ouvrir une Présentation

Pour ouvrir une présentation existante, vous devez simplement instancier la classe Presentation et passer le chemin du fichier (de la présentation que vous souhaitez ouvrir) à son constructeur.

Ce code C++ vous montre comment ouvrir une présentation et également découvrir le nombre de diapositives qu’elle contient :

// Le chemin vers le répertoire des documents.
String dataDir = u"";

// Instancie la classe Presentation et passe le chemin du fichier à son constructeur
auto pres = System::MakeObject<Presentation>(dataDir + u"OpenPresentation.pptx");

// Imprime le nombre total de diapositives présentes dans la présentation
Console::WriteLine(Convert::ToString(pres->get_Slides()->get_Count()));

Ouvrir une Présentation Protégée par Mot de Passe

Lorsque vous devez ouvrir une présentation protégée par mot de passe, vous pouvez passer le mot de passe via la propriété get_Password() (de la classe LoadOptions) pour déchiffrer la présentation et charger la présentation. Ce code C++ illustre l’opération :

System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_Password(u"VOTRE_MOT_DE_PASSE");
auto presentation = System::MakeObject<Presentation>(u"pres.pptx", loadOptions);
// Effectuer des opérations avec la présentation déchiffrée

Ouvrir une Grande Présentation

Aspose.Slides fournit des options (la propriété BlobManagementOptions en particulier) sous la classe LoadOptions pour vous permettre de charger de grandes présentations.

Ce C++ illustre une opération dans laquelle une grande présentation (disons de 2 Go) est chargée :

String pathToVeryLargePresentationFile = u"veryLargePresentation.pptx";

{
    SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
    // choisissons le comportement KeepLocked - la "veryLargePresentation.pptx" sera verrouillée pour
    // la durée de vie de l'instance de la Présentation, mais nous n'avons pas besoin de la charger en mémoire ou de la copier dans
    // le fichier temporaire
    loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);

    auto pres = System::MakeObject<Presentation>(pathToVeryLargePresentationFile, loadOptions);

    // La grande présentation a été chargée et peut être utilisée, mais la consommation de mémoire reste faible.

    // Apporte des modifications à la présentation.
    pres->get_Slides()->idx_get(0)->set_Name(u"Très grande présentation");

    // La présentation sera enregistrée dans l'autre fichier. La consommation de mémoire reste faible durant l'opération
    pres->Save(u"veryLargePresentation-copy.pptx", SaveFormat::Pptx);

    // cela ne peut pas être fait ! Une exception IO sera lancée car le fichier est verrouillé pendant que les objets pres ne seront
    // pas supprimés
    File::Delete(pathToVeryLargePresentationFile);
}

// C'est ok de le faire ici. Le fichier source n'est pas verrouillé par l'objet pres
File::Delete(pathToVeryLargePresentationFile);

Charger une Présentation

Aspose.Slides fournit IResourceLoadingCallback avec une seule méthode pour vous permettre de gérer des ressources externes. Ce code C++ vous montre comment utiliser l’interface IResourceLoadingCallback :

// Le chemin vers le répertoire des documents.
System::String dataDir = GetDataPath();

auto opts = System::MakeObject<LoadOptions>();
opts->set_ResourceLoadingCallback(System::MakeObject<ImageLoadingHandler>(dataDir));
auto presentation = System::MakeObject<Presentation>(dataDir + u"presentation.pptx", opts);
class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
    ImageLoadingHandler(String dataDir)
        : m_dataDir(dataDir)
    {
    }

    ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
    {
        if (args->get_OriginalUri().EndsWith(u".jpg"))
        {
            try
            {
                System::ArrayPtr<uint8_t> imageBytes = File::ReadAllBytes(Path::Combine(m_dataDir, u"aspose-logo.jpg"));
                args->SetData(imageBytes);
                return ResourceLoadingAction::UserProvided;
            }
            catch (System::Exception&)
            {
                return ResourceLoadingAction::Skip;
            }
        }

        if (args->get_OriginalUri().EndsWith(u".png"))
        {
            // Définit l'URL de remplacement
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // Ignore toutes les autres images
        return ResourceLoadingAction::Skip;
    }
    
private:
    String m_dataDir;
};

Ouvrir et Enregistrer une Présentation

Étapes : Ouvrir et Enregistrer une Présentation en C++

  1. Créez une instance de la classe Presentation et passez le fichier que vous souhaitez ouvrir.

  2. Enregistrez la présentation.

     const String outPath = u"../out/SaveToFile_out.ppt";
       	
     SharedPtr<Presentation> pres = MakeObject<Presentation>();
       
     // pres->get_ProtectionManager()->Encrypt(u"pass");
     // ... effectuez certaines opérations ici..
       
     pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);