Converter Slides de Apresentação em Imagens no Android

Introdução

Aspose.Slides for Android via 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 Size 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 com.aspose.slides.android.Size;

Size imageSize = new Size(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 para 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 android.graphics.Color;
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;

float scaleX = 2f;
float scaleY = scaleX;

int commentsAreaColor = Color.rgb(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 com.aspose.slides.android.Size;

Size imageSize = new Size(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 para 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 de Metarquivo Avançado

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 preservar operações de desenho vetorial que escalam sem a mesma perda de nitidez. No entanto, o 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 slides, 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 possui o fluxo passado para ISlide.writeAsEmf e é responsável por fechá-lo, conforme 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‑lo em 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 fluxo ser fechado.

A geração de EMF está disponível nas versões Android suportadas e nas configurações de dispositivo, mas a renderização pode variar 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 o guia de instalação para Aspose.Slides for Android via Java e valide o resultado no aplicativo de destino que consome EMF. Aplicativos em plataformas não Windows 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.