Converter Slides de Apresentação em Imagens em Python

Introdução

Aspose.Slides for Python via .NET pode renderizar slides individuais de apresentações PowerPoint e OpenDocument como PNG, JPEG, GIF, TIFF e outros formatos de imagem.

Para converter um slide em uma imagem, siga estas etapas:

  1. Carregue a apresentação com a classe Presentation.
  2. Selecione o slide que você deseja renderizar.
  3. Se necessário, configure a renderização com a classe RenderingOptions ou TiffOptions.
  4. Chame o método Slide.get_image. Ele retorna um objeto IImage.
  5. Chame o método IImage.save e especifique o formato de saída com um valor ImageFormat.

Converter um Slide em uma Imagem PNG

A conversão mais simples usa as configurações de renderização padrão. O objeto IImage resultante pode ser processado em memória ou salvo em um arquivo.

O exemplo em Python a seguir renderiza o primeiro slide e o salva como uma imagem PNG:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image() as image:
        image.save("Slide_0.png", slides.ImageFormat.PNG)

Converter Slides em Imagens com Tamanhos Personalizados

Use a sobrecarga Slide.get_image que aceita um valor Size para renderizar um slide com dimensões de pixel exatas.

O exemplo a seguir cria uma imagem JPEG de 1820 × 1040:

import aspose.pydrawing as draw
import aspose.slides as slides

image_size = draw.Size(1820, 1040)

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(image_size) as image:
        image.save("Slide_0.jpg", slides.ImageFormat.JPEG)

Converter Slides com Anotações e Comentários em Imagens

Por padrão, as imagens dos slides não incluem anotações nem comentários. Atribua um objeto NotesCommentsLayoutingOptions à propriedade RenderingOptions.slides_layout_options para controlar onde as anotações e comentários aparecem.

O exemplo a seguir coloca anotações truncadas abaixo do slide e comentários à sua direita:

import aspose.pydrawing as draw
import aspose.slides as slides

scale_x = 2
scale_y = scale_x

layout_options = slides.export.NotesCommentsLayoutingOptions()
layout_options.notes_position = slides.export.NotesPositions.BOTTOM_TRUNCATED
layout_options.comments_position = slides.export.CommentsPositions.RIGHT
layout_options.comments_area_width = 500
layout_options.comments_area_color = draw.Color.antique_white

rendering_options = slides.export.RenderingOptions()
rendering_options.slides_layout_options = layout_options

with slides.Presentation("Presentation_with_notes_and_comments.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(rendering_options, scale_x, scale_y) as image:
        image.save("Image_with_notes_and_comments_0.gif", slides.ImageFormat.GIF)

Converter Slides em Imagens Usando Opções TIFF

A classe TiffOptions permite controlar o tamanho, a resolução e outras propriedades da imagem TIFF renderizada.

O exemplo a seguir renderiza o primeiro slide como uma imagem TIFF de 2160 × 2880 a 300 DPI:

import aspose.pydrawing as draw
import aspose.slides as slides

tiff_options = slides.export.TiffOptions()
tiff_options.image_size = draw.Size(2160, 2880)
tiff_options.dpi_x = 300
tiff_options.dpi_y = 300

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(tiff_options) as image:
        image.save("output.tiff", slides.ImageFormat.TIFF)

Converter Todos os Slides em Imagens

Itere pela coleção de slides para converter toda a apresentação em uma série de imagens. Slides ocultos são incluídos, a menos que você os ignore explicitamente.

O exemplo a seguir renderiza cada slide como uma imagem JPEG com fatores de escala horizontal e vertical iguais a 2:

import aspose.slides as slides

scale_x = 2
scale_y = scale_x

with slides.Presentation("Presentation.pptx") as presentation:
    for index, slide in enumerate(presentation.slides):
        with slide.get_image(scale_x, scale_y) as image:
            image.save("Slide_{}.jpg".format(index), slides.ImageFormat.JPEG)

Criar Saída em Metarquivo Aprimorado

Metarquivo Aprimorado (EMF) é útil quando gráficos baseados em vetor precisam ser trocados com o Microsoft Office ou outras aplicações Windows que suportam metarquivos Windows. Diferentemente de uma imagem baseada em pixels, um EMF pode manter as operações de desenho vetorial que escalam sem perda de nitidez. No entanto, EMF é principalmente um formato de compatibilidade para aplicações com suporte a metarquivos Windows, não um formato de intercâmbio universal. Além disso, conteúdo complexo de slides, como imagens bitmap e alguns efeitos, pode ser armazenado como elementos rasterizados dentro do contêiner vetorial do metarquivo.

Exportar um Slide para EMF

O método Slide.write_as_emf grava um Slide em um fluxo de destino no formato EMF. O exemplo a seguir carrega uma apresentação, seleciona o primeiro slide e o grava em um fluxo de arquivo EMF:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with open("Slide_0.emf", "wb") as emf_stream:
        slide.write_as_emf(emf_stream)

O chamador possui o fluxo passado para Slide.write_as_emf e deve fechá‑lo. Aspose.Slides grava na posição atual do fluxo e deixa o fluxo aberto.

Converter uma Imagem SVG para EMF e adicioná‑la a uma Apresentação

Use SvgImage.write_as_emf para converter conteúdo SVG em EMF. Os bytes resultantes podem ser adicionados à apresentação através de ImageCollection.add_image e colocados em um slide com ShapeCollection.add_picture_frame.

O exemplo a seguir cria um SvgImage a partir de marcação SVG, converte‑o em um EMF em memória, insere o metarquivo no primeiro slide e salva a apresentação:

import io
import aspose.slides as slides

svg_content = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100"><rect width="200" height="100" fill="#4472C4"/></svg>'
svg_image = slides.SvgImage(svg_content)

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    with io.BytesIO() as emf_stream:
        svg_image.write_as_emf(emf_stream)
        emf_data = emf_stream.getvalue()

    image = presentation.images.add_image(emf_data)
    slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 20, 20, 200, 100, image)

    presentation.save("Presentation_with_emf.pptx", slides.export.SaveFormat.PPTX)

SvgImage.write_as_emf não assume a propriedade do fluxo de destino. Após a gravação, a posição do fluxo está no final dos dados gerados. Chame getvalue para obter o buffer completo independentemente da posição atual do fluxo, como mostrado acima. Mantenha o fluxo aberto até que os dados sejam lidos e feche‑o depois.

A geração de EMF está disponível nos sistemas operacionais suportados pelo Aspose.Slides for Python via .NET, mas a renderização pode variar entre plataformas quando fontes ou dependências gráficas nativas não estão disponíveis. Instale as fontes usadas pelo conteúdo de origem ou configure substituições adequadas, siga os requisitos de plataforma para Aspose.Slides e valide o resultado na aplicação que consumirá o EMF. Aplicações Linux e macOS costumam ter suporte limitado ou inconsistente para exibir e editar metarquivos Windows.

Renderização de Emoji Colorido

FAQ

O Aspose.Slides suporta renderização de slides com animações?

Não. O método Slide.get_image renderiza uma imagem estática do slide e não exporta animações.

Slides ocultos podem ser exportados como imagens?

Sim. Slides ocultos podem ser renderizados como slides normais. Inclua‑os no loop de processamento, como mostrado no exemplo acima.

Sombras e outros efeitos são preservados nas imagens dos slides?

Sim. Aspose.Slides renderiza sombras, transparência e outros efeitos gráficos suportados nas imagens dos slides.