Открыть Презентацию - C++ PowerPoint API

Помимо создания презентаций PowerPoint с нуля, Aspose.Slides позволяет открывать существующие презентации. После загрузки презентации вы можете получить информацию о ней, редактировать содержание на слайдами, добавлять новые слайды или удалять существующие и т. д.

Открыть Презентацию

Чтобы открыть существующую презентацию, вам просто нужно создать экземпляр класса Presentation и передать путь к файлу (презентации, которую вы хотите открыть) в его конструктор.

Этот код на C++ показывает, как открыть презентацию и узнать, сколько слайдов она содержит:

// Путь к каталогу документов.
String dataDir = u"";

// Создает экземпляр класса Presentation и передает путь к файлу в его конструктор
auto pres = System::MakeObject<Presentation>(dataDir + u"OpenPresentation.pptx");

// Выводит общее количество слайдов в презентации
Console::WriteLine(Convert::ToString(pres->get_Slides()->get_Count()));

Открыть Защищенную Паролем Презентацию

Когда вам нужно открыть презентацию, защищенную паролем, вы можете передать пароль через свойство get_Password() (из класса LoadOptions) для расшифровки и загрузки презентации. Этот код на C++ демонстрирует операцию:

System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_Password(u"ВАШ_ПАРОЛЬ");
auto presentation = System::MakeObject<Presentation>(u"pres.pptx", loadOptions);
// Выполните некоторые операции с расшифрованной презентацией

Открыть Крупную Презентацию

Aspose.Slides предоставляет параметры (в частности, свойство BlobManagementOptions в классе LoadOptions), которые позволяют загружать крупные презентации.

Этот код на C++ демонстрирует операцию, в которой загружается большая презентация (например, размером 2 ГБ):

String pathToVeryLargePresentationFile = u"veryLargePresentation.pptx";

{
    SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
    // выбираем поведение KeepLocked - "veryLargePresentation.pptx" будет заблокирован на
    // время существования экземпляра Presentation, но мы не должны загружать его в память или копировать в
    // временный файл
    loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);

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

    // Большая презентация была загружена и может быть использована, но потребление памяти при этом остается низким.

    // Вносит изменения в презентацию.
    pres->get_Slides()->idx_get(0)->set_Name(u"Очень большая презентация");

    // Презентация будет сохранена в другой файл. Потребление памяти остается низким во время операции
    pres->Save(u"veryLargePresentation-copy.pptx", SaveFormat::Pptx);

    // нельзя этого делать! Произойдет исключение I/O, потому что файл заблокирован, пока объекты pres не
    // будут уничтожены
    File::Delete(pathToVeryLargePresentationFile);
}

// Здесь можно это сделать. Исходный файл не заблокирован объектом pres
File::Delete(pathToVeryLargePresentationFile);

Загрузить Презентацию

Aspose.Slides предоставляет IResourceLoadingCallback с одним методом, который позволяет управлять внешними ресурсами. Этот код на C++ показывает, как использовать интерфейс IResourceLoadingCallback:

// Путь к каталогу документов.
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"))
        {
            // Устанавливает заменяющий URL
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // Пропускает все остальные изображения
        return ResourceLoadingAction::Skip;
    }
    
private:
    String m_dataDir;
};

Открыть и Сохранить Презентацию

Шаги: Открыть и Сохранить Презентацию на C++

  1. Создайте экземпляр класса Presentation и передайте файл, который вы хотите открыть.

  2. Сохраните презентацию.

     const String outPath = u"../out/SaveToFile_out.ppt";
       	
     SharedPtr<Presentation> pres = MakeObject<Presentation>();
       
     // pres->get_ProtectionManager()->Encrypt(u"pass");
     // ...выполните некоторые операции здесь..
       
     pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);