Создание просмотрщика презентаций на C++
Aspose.Slides for C++ используется для создания файлов презентаций со слайдами. Эти слайды можно просматривать, открывая презентации в Microsoft PowerPoint, например. Однако иногда разработчикам может потребоваться просматривать слайды как изображения в предпочитаемом просмотрщике изображений или создавать собственный просмотрщик презентаций. В таких случаях Aspose.Slides позволяет экспортировать отдельный слайд как изображение. Эта статья описывает, как это сделать.
Создать SVG‑изображение со слайда
Чтобы создать SVG‑изображение из слайда презентации с помощью Aspose.Slides, выполните следующие действия:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Откройте файловый поток.
- Сохраните слайд как 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, выполните следующие действия:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Получите эскиз изображения указанного слайда в заданном масштабе.
- Сохраните эскиз в любом требуемом формате изображения.
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();
Создать эскиз слайда с пользовательскими размерами
Чтобы создать изображение эскиза слайда с пользовательскими размерами, выполните следующие действия:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Получите эскиз изображения указанного слайда с заданными размерами.
- Сохраните эскиз в любом требуемом формате изображения.
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, выполните следующие действия:
- Создайте экземпляр класса RenderingOptions .
- Используйте метод
RenderingOptions.set_SlidesLayoutOptions, чтобы задать позицию примечаний к докладчику. - Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Получите эскиз изображения слайда с учётом параметров рендеринга.
- Сохраните эскиз в любом требуемом формате изображения.
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:

Часто задаваемые вопросы
Могу ли я встроить просмотрщик презентаций в веб‑приложение?
Да. Вы можете использовать Aspose.Slides на стороне сервера для рендеринга слайдов в виде изображений или HTML и отображать их в браузере. Навигацию и масштабирование можно реализовать с помощью JavaScript для интерактивного опыта.
Как лучше всего отображать слайды в пользовательском просмотрщике?
Рекомендуемый подход — рендерить каждый слайд как изображение (например, PNG или SVG) либо конвертировать его в HTML с помощью Aspose.Slides, затем выводить результат в элементе picture (для десктопа) или в HTML‑контейнере (для веба).
Как обрабатывать крупные презентации с большим количеством слайдов?
Для больших презентаций стоит использовать отложенную загрузку или рендеринг по запросу. Это означает генерацию содержимого слайда только в момент, когда пользователь переходит к нему, что сокращает расход памяти и время загрузки.