Конвертация слайдов PowerPoint в PNG на C++

О преобразовании PowerPoint в PNG

Формат PNG (Portable Network Graphics) не так популярен, как JPEG (Joint Photographic Experts Group), но всё равно широко используется.

Сценарий использования: Когда у вас сложное изображение и размер не имеет значения, PNG лучше подходит, чем JPEG.

Преобразовать PowerPoint в PNG

Выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите объект слайда из коллекции Presentation::get_Slides() через интерфейс ISlide.
  3. Вызовите метод ISlide::GetImage(), чтобы получить миниатюру каждого слайда.
  4. С помощью метода IImage::Save(String,ImageFormatPtr сохраните миниатюру слайда в формате PNG.

Этот пример кода на C++ показывает, как конвертировать презентацию PowerPoint в PNG:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");
    
for (int32_t index = 0; index < pres->get_Slides()->get_Count(); index++)
{
    auto slide = pres->get_Slides()->idx_get(index);
    auto fileName = String::Format(u"slide_{0}.png", index);
    slide->GetImage()->Save(fileName, ImageFormat::Png);
}

Преобразовать PowerPoint в PNG с пользовательскими масштабами

Если необходимо получить PNG‑файлы определённого масштаба, задайте значения desiredX и desiredY, которые определяют размеры получаемой миниатюры.

Следующий код на C++ демонстрирует описанную операцию:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");

float scaleX = 2.f;
float scaleY = 2.f;
for (int32_t index = 0; index < pres->get_Slides()->get_Count(); index++)
{
    auto slide = pres->get_Slides()->idx_get(index);
    auto fileName = String::Format(u"slide_{0}.png", index);
    slide->GetImage(scaleX, scaleY)->Save(fileName, ImageFormat::Png);
}

Преобразовать PowerPoint в PNG с пользовательским размером

Если необходимо получить PNG‑файлы определённого размера, передайте желаемые аргументы width и height для ImageSize.

Этот пример кода показывает, как конвертировать PowerPoint в PNG с указанием размеров изображений:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");
    
Size size(960, 720);
for (int32_t index = 0; index < pres->get_Slides()->get_Count(); index++)
{
    auto slide = pres->get_Slides()->idx_get(index);
    auto fileName = String::Format(u"slide_{0}.png", index);
    slide->GetImage(size)->Save(fileName, ImageFormat::Png);
}

FAQ

Как экспортировать только конкретный элемент (например, диаграмму или изображение), а не весь слайд?

Aspose.Slides поддерживает создание миниатюр для отдельных фигур; вы можете отрисовать форму в PNG‑изображение.

Поддерживается ли параллельное преобразование на сервере?

Да, но не делитесь одним экземпляром презентации между потоками. Используйте отдельный экземпляр для каждого потока или процесса.

Какие ограничения имеются в пробной версии при экспорте в PNG?

Режим оценки добавляет водяной знак к выводимым изображениям и накладывает другие ограничения до применения лицензии.