Criar um Visualizador de Apresentação em C++

Introdução

Aspose.Slides for C++ é usado para criar arquivos de apresentação com slides. Esses slides podem ser visualizados ao abrir apresentações no Microsoft PowerPoint, por exemplo. No entanto, às vezes os desenvolvedores podem precisar ver os slides como imagens em seu visualizador de imagens preferido ou criar seu próprio visualizador de apresentações. Nesses casos, o Aspose.Slides permite exportar um slide individual como imagem. Este artigo descreve como fazer isso.

Gerar uma Imagem SVG a partir de um Slide

Para gerar uma imagem SVG a partir de um slide de apresentação com Aspose.Slides, siga as etapas abaixo:

  1. Crie uma instância da classe Presentation .
  2. Obtenha a referência do slide pelo seu índice.
  3. Abra um fluxo de arquivo.
  4. Salve o slide como uma imagem SVG no fluxo de arquivo.
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();

Gerar um SVG com um ID de Forma Personalizado

Aspose.Slides pode ser usado para gerar um SVG a partir de um slide com um ID de forma personalizado. Para isso, use o método set_Id da ISvgShape. CustomSvgShapeFormattingController pode ser usado para definir o ID da forma.

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++));
    }
};

Criar uma Imagem Miniatura de Slide

Aspose.Slides ajuda a gerar imagens em miniatura de slides. Para gerar uma miniatura de um slide usando Aspose.Slides, siga as etapas abaixo:

  1. Crie uma instância da classe Presentation .
  2. Obtenha a referência do slide pelo seu índice.
  3. Obtenha a imagem miniatura do slide referenciado em uma escala definida.
  4. Salve a imagem miniatura em qualquer formato de imagem desejado.
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();

Criar uma Miniatura de Slide com Dimensões Definidas pelo Usuário

Para criar uma imagem miniatura de slide com dimensões definidas pelo usuário, siga as etapas abaixo:

  1. Crie uma instância da classe Presentation .
  2. Obtenha a referência do slide pelo seu índice.
  3. Obtenha a imagem miniatura do slide referenciado com as dimensões definidas.
  4. Salve a imagem miniatura em qualquer formato de imagem desejado.
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();

Criar uma Miniatura de Slide com Notas do Apresentador

Para gerar a miniatura de um slide com notas do apresentador usando Aspose.Slides, siga as etapas abaixo:

  1. Crie uma instância da classe RenderingOptions .
  2. Use o método RenderingOptions.set_SlidesLayoutOptions para definir a posição das notas do apresentador.
  3. Crie uma instância da classe Presentation .
  4. Obtenha a referência do slide pelo seu índice.
  5. Obtenha a imagem miniatura do slide referenciado com as opções de renderização.
  6. Salve a imagem miniatura em qualquer formato de imagem desejado.
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();

Exemplo ao Vivo

Você pode experimentar o aplicativo gratuito Aspose.Slides Viewer para ver o que pode implementar com a API do Aspose.Slides:

Visualizador Online do PowerPoint

Perguntas Frequentes

Posso incorporar um visualizador de apresentações em uma aplicação web?

Sim. Você pode usar o Aspose.Slides no lado do servidor para renderizar slides como imagens ou HTML e exibí‑los no navegador. Recursos de navegação e zoom podem ser implementados com JavaScript para uma experiência interativa.

Qual é a melhor forma de exibir slides dentro de um visualizador personalizado?

A abordagem recomendada é renderizar cada slide como uma imagem (por exemplo, PNG ou SVG) ou convertê‑lo para HTML usando Aspose.Slides, e então exibir o resultado dentro de um picture box (para desktop) ou de um contêiner HTML (para web).

Como lidar com apresentações grandes com muitos slides?

Para decks grandes, considere carregamento preguiçoso (lazy‑loading) ou renderização sob demanda dos slides. Isso significa gerar o conteúdo de um slide somente quando o usuário navega até ele, reduzindo o consumo de memória e o tempo de carregamento.