Converter Slides de Apresentação para Imagens em Java

Introdução

Aspose.Slides for Java 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 ISlide.getImage . 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 para Imagem PNG

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

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

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage();
    try {
        image.save("Slide_0.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Converter Slides para Imagens com Tamanhos Personalizados

Use a sobrecarga ISlide.getImage que aceita um valor Dimension para renderizar um slide com dimensões de pixel exatas.

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

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import java.awt.Dimension;

Dimension imageSize = new Dimension(1820, 1040);

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(imageSize);
    try {
        image.save("Slide_0.jpg", ImageFormat.Jpeg);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Converter Slides com Notas e Comentários em Imagens

Por padrão, as imagens dos slides não incluem notas ou comentários. Passe um objeto NotesCommentsLayoutingOptions para o método RenderingOptions.setSlidesLayoutOptions para controlar onde notas e comentários aparecem.

O exemplo a seguir coloca notas truncadas abaixo do slide e comentários à sua direita:

import com.aspose.slides.CommentsPositions;
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.NotesCommentsLayoutingOptions;
import com.aspose.slides.NotesPositions;
import com.aspose.slides.Presentation;
import com.aspose.slides.RenderingOptions;
import java.awt.Color;

float scaleX = 2f;
float scaleY = scaleX;

Color commentsAreaColor = new Color(250, 235, 215);

NotesCommentsLayoutingOptions layoutOptions = new NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);

RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);

Presentation presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(renderingOptions, scaleX, scaleY);
    try {
        image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Converter Slides para 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 com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.TiffOptions;
import java.awt.Dimension;

Dimension imageSize = new Dimension(2160, 2880);

TiffOptions tiffOptions = new TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(tiffOptions);
    try {
        image.save("output.tiff", ImageFormat.Tiff);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Converter Todos os Slides em Imagens

Itere através da 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 de 2:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

float scaleX = 2f;
float scaleY = scaleX;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    int slideCount = presentation.getSlides().size();
    for (int index = 0; index < slideCount; index++) {
        ISlide slide = presentation.getSlides().get_Item(index);
        IImage image = slide.getImage(scaleX, scaleY);
        try {
            image.save("Slide_" + index + ".jpg", ImageFormat.Jpeg);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Criar Saída Metafile Aprimorada

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

Exportar um Slide para EMF

O método ISlide.writeAsEmf grava um ISlide 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 com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.io.FileOutputStream;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    FileOutputStream emfStream = new FileOutputStream("Slide_0.emf");
    try {
        slide.writeAsEmf(emfStream);
    } finally {
        emfStream.close();
    }
} finally {
    presentation.dispose();
}

O chamador é proprietário do fluxo passado para ISlide.writeAsEmf e é responsável por fechá-lo, como mostrado acima.

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

Use ISvgImage.writeAsEmf para converter conteúdo SVG em EMF. Os bytes resultantes podem ser adicionados à apresentação através de IImageCollection.addImage e colocados em um slide com IShapeCollection.addPictureFrame.

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

import com.aspose.slides.IPPImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ISvgImage;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
import com.aspose.slides.SvgImage;
import java.io.ByteArrayOutputStream;

String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
ISvgImage svgImage = new SvgImage(svgContent);

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    ByteArrayOutputStream emfStream = new ByteArrayOutputStream();
    try {
        svgImage.writeAsEmf(emfStream);

        byte[] emfData = emfStream.toByteArray();
        IPPImage image = presentation.getImages().addImage(emfData);
        slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
    } finally {
        emfStream.close();
    }

    presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ISvgImage.writeAsEmf não assume a propriedade do fluxo de destino. Um ByteArrayOutputStream armazena todos os dados gerados na memória, portanto não é necessário redefinir a posição antes de chamar toByteArray. O array de bytes retornado permanece válido após o fechamento do fluxo.

A geração de EMF está disponível nos sistemas operacionais suportados pela configuração selecionada do Aspose.Slides for Java e do JDK, mas a renderização pode variar entre plataformas quando fontes ou dependências gráficas 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 for Java e valide o resultado no aplicativo de destino que consome EMF. Aplicativos Linux e macOS frequentemente têm suporte limitado ou inconsistente para exibir e editar metafiles do Windows.

Renderização de Emoji Colorido

FAQ

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

Não. O método ISlide.getImage 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.