Создание просмотрщика презентаций на C++

Aspose.Slides for C++ используется для создания файлов презентаций со слайдами. Эти слайды можно просматривать, открывая презентации в Microsoft PowerPoint, например. Однако иногда разработчикам может потребоваться просматривать слайды как изображения в предпочитаемом просмотрщике изображений или создавать собственный просмотрщик презентаций. В таких случаях Aspose.Slides позволяет экспортировать отдельный слайд как изображение. Эта статья описывает, как это сделать.

Создать SVG‑изображение со слайда

Чтобы создать SVG‑изображение из слайда презентации с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Откройте файловый поток.
  4. Сохраните слайд как SVG‑изображение в файловый поток.
auto slideIndex = 0;

auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);

auto svgStream = File::Create(u"output.svg");
slide->WriteAsSvg(svgStream);
svgStream->Dispose();

presentation->Dispose();

Создать SVG с пользовательским идентификатором фигуры

Aspose.Slides можно использовать для создания SVG со слайда с пользовательским идентификатором фигуры. Для этого используйте метод set_Id из ISvgShape. Класс CustomSvgShapeFormattingController может быть использован для задания идентификатора фигуры.

auto slideIndex = 0;

auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);

auto svgOptions = MakeObject<SVGOptions>();
svgOptions->set_ShapeFormattingController(MakeObject<CustomSvgShapeFormattingController>());

auto svgStream = File::Create(u"output.svg");
slide->WriteAsSvg(svgStream, svgOptions);
svgStream->Dispose();

presentation->Dispose();
class CustomSvgShapeFormattingController : public ISvgShapeFormattingController
{
private:
    int m_shapeIndex;

public:
    CustomSvgShapeFormattingController(int shapeStartIndex = 0)
    {
        m_shapeIndex = shapeStartIndex;
    }

    void FormatShape(SharedPtr<ISvgShape> svgShape, SharedPtr<IShape> shape)
    {
        svgShape->set_Id(String::Format(u"shape-{0}", m_shapeIndex++));
    }
};

Создать изображение эскиза слайда

Aspose.Slides помогает генерировать эскизы слайдов. Чтобы создать эскиз слайда с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Получите эскиз изображения указанного слайда в заданном масштабе.
  4. Сохраните эскиз в любом требуемом формате изображения.
auto slideIndex = 0;
auto scaleX = 1;
auto scaleY = scaleX;

auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);

auto image = slide->GetImage(scaleX, scaleY);
image->Save(u"output.jpg", ImageFormat::Png);
image->Dispose();

presentation->Dispose();

Создать эскиз слайда с пользовательскими размерами

Чтобы создать изображение эскиза слайда с пользовательскими размерами, выполните следующие действия:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Получите эскиз изображения указанного слайда с заданными размерами.
  4. Сохраните эскиз в любом требуемом формате изображения.
auto slideIndex = 0;
auto slideSize = Size(1200, 800);

auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);

auto image = slide->GetImage(slideSize);
image->Save(u"output.jpg", ImageFormat::Png);
image->Dispose();

presentation->Dispose();

Создать эскиз слайда с примечаниями к докладчику

Чтобы создать эскиз слайда с примечаниями к докладчику с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса RenderingOptions .
  2. Используйте метод RenderingOptions.set_SlidesLayoutOptions, чтобы задать позицию примечаний к докладчику.
  3. Создайте экземпляр класса Presentation .
  4. Получите ссылку на слайд по его индексу.
  5. Получите эскиз изображения слайда с учётом параметров рендеринга.
  6. Сохраните эскиз в любом требуемом формате изображения.
auto slideIndex = 0;

auto layoutingOptions = MakeObject<NotesCommentsLayoutingOptions>();
layoutingOptions->set_NotesPosition(NotesPositions::BottomTruncated);

auto renderingOptions = MakeObject<RenderingOptions>();
renderingOptions->set_SlidesLayoutOptions(layoutingOptions);

auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(slideIndex);

auto image = slide->GetImage(renderingOptions);
image->Save(u"output.png", ImageFormat::Png);
image->Dispose();

presentation->Dispose();

Живой пример

Вы можете попробовать бесплатное приложение Aspose.Slides Viewer , чтобы увидеть, что можно реализовать с помощью API Aspose.Slides:

Онлайн просмотрщик PowerPoint

Часто задаваемые вопросы

Могу ли я встроить просмотрщик презентаций в веб‑приложение?

Да. Вы можете использовать Aspose.Slides на стороне сервера для рендеринга слайдов в виде изображений или HTML и отображать их в браузере. Навигацию и масштабирование можно реализовать с помощью JavaScript для интерактивного опыта.

Как лучше всего отображать слайды в пользовательском просмотрщике?

Рекомендуемый подход — рендерить каждый слайд как изображение (например, PNG или SVG) либо конвертировать его в HTML с помощью Aspose.Slides, затем выводить результат в элементе picture (для десктопа) или в HTML‑контейнере (для веба).

Как обрабатывать крупные презентации с большим количеством слайдов?

Для больших презентаций стоит использовать отложенную загрузку или рендеринг по запросу. Это означает генерацию содержимого слайда только в момент, когда пользователь переходит к нему, что сокращает расход памяти и время загрузки.