Abrir Presentación - API de PowerPoint C++

Además de crear presentaciones de PowerPoint desde cero, Aspose.Slides te permite abrir presentaciones existentes. Después de cargar una presentación, puedes obtener información sobre la presentación, editar la presentación (contenido en sus diapositivas), agregar nuevas diapositivas o eliminar las existentes, etc.

Abrir Presentación

Para abrir una presentación existente, simplemente tienes que instanciar la clase Presentation y pasar la ruta del archivo (de la presentación que deseas abrir) a su constructor.

Este código C++ te muestra cómo abrir una presentación y también averiguar cuántas diapositivas contiene:

// La ruta al directorio de documentos.
String dataDir = u"";

// Instancia la clase Presentation y pasa la ruta del archivo a su constructor
auto pres = System::MakeObject<Presentation>(dataDir + u"OpenPresentation.pptx");

// Imprime el número total de diapositivas presentes en la presentación
Console::WriteLine(Convert::ToString(pres->get_Slides()->get_Count()));

Abrir Presentación Protegida por Contraseña

Cuando tengas que abrir una presentación protegida por contraseña, puedes pasar la contraseña a través de la propiedad get_Password() (de la clase LoadOptions) para descifrar la presentación y cargar la presentación. Este código C++ demuestra la operación:

System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_Password(u"YOUR_PASSWORD");
auto presentation = System::MakeObject<Presentation>(u"pres.pptx", loadOptions);
// Haz algo con la presentación descifrada

Abrir Presentación Grande

Aspose.Slides proporciona opciones (la propiedad BlobManagementOptions en particular) bajo la clase LoadOptions para permitirte cargar presentaciones grandes.

Este C++ demuestra una operación en la que se carga una presentación grande (digamos de 2GB de tamaño):

String pathToVeryLargePresentationFile = u"veryLargePresentation.pptx";

{
    SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
    // elijamos el comportamiento KeepLocked - la "veryLargePresentation.pptx" estará bloqueada durante
    // la vida útil de la instancia de Presentation, pero no necesitamos cargarla en memoria ni copiarla en
    // el archivo temporal
    loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);

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

    // La presentación grande ha sido cargada y puede ser utilizada, pero el consumo de memoria sigue siendo bajo.

    // Realiza cambios en la presentación.
    pres->get_Slides()->idx_get(0)->set_Name(u"Presentación muy grande");

    // La presentación se guardará en el otro archivo. El consumo de memoria se mantiene bajo durante la operación
    pres->Save(u"veryLargePresentation-copy.pptx", SaveFormat::Pptx);

    // ¡No se puede hacer eso! Se lanzará una excepción de IO porque el archivo está bloqueado mientras los objetos pres no serán
    // eliminados
    File::Delete(pathToVeryLargePresentationFile);
}

// Está bien hacerlo aquí. El archivo fuente no está bloqueado por el objeto pres
File::Delete(pathToVeryLargePresentationFile);

Cargar Presentación

Aspose.Slides proporciona IResourceLoadingCallback con un método único para permitirte gestionar recursos externos. Este código C++ te muestra cómo usar la interfaz IResourceLoadingCallback:

// La ruta al directorio de documentos.
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"))
        {
            // Establece la url de sustitución
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // Salta todas las demás imágenes
        return ResourceLoadingAction::Skip;
    }
    
private:
    String m_dataDir;
};

Abrir y Guardar Presentación

Pasos: Abrir y Guardar Presentación en C++

  1. Crea una instancia de la clase Presentation y pasa el archivo que deseas abrir.

  2. Guarda la presentación.

     const String outPath = u"../out/SaveToFile_out.ppt";
       	
     SharedPtr<Presentation> pres = MakeObject<Presentation>();
       
     // pres->get_ProtectionManager()->Encrypt(u"pass");
     // ...haz algún trabajo aquí..
       
     pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);