Convertir diapositivas de presentación a imágenes en Android

Introducción

Aspose.Slides for Android via Java puede renderizar diapositivas individuales de presentaciones PowerPoint y OpenDocument como PNG, JPEG, GIF, TIFF y otros formatos de imagen.

Para convertir una diapositiva en una imagen, siga estos pasos:

  1. Cargue la presentación con la clase Presentation.
  2. Seleccione la diapositiva que desea renderizar.
  3. Si es necesario, configure la renderización con la clase RenderingOptions o TiffOptions.
  4. Llame al método ISlide.getImage. Devuelve un objeto IImage.
  5. Llame al método IImage.save y especifique el formato de salida con un valor ImageFormat.

Convertir una diapositiva a una imagen PNG

La conversión más simple utiliza la configuración de renderizado predeterminada. El objeto IImage resultante puede procesarse en memoria o guardarse en un archivo.

El siguiente ejemplo en Java renderiza la primera diapositiva y la guarda como una imagen 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();
}

Convertir diapositivas a imágenes con tamaños personalizados

Utilice la sobrecarga ISlide.getImage que acepta un valor Size para renderizar una diapositiva con dimensiones de píxel exactas.

El siguiente ejemplo crea una imagen 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();
}

Convertir diapositivas con notas y comentarios a imágenes

De forma predeterminada, las imágenes de diapositivas no incluyen notas ni comentarios. Pase un objeto NotesCommentsLayoutingOptions al método RenderingOptions.setSlidesLayoutOptions para controlar dónde aparecen las notas y los comentarios.

El siguiente ejemplo coloca notas truncadas debajo de la diapositiva y comentarios a su derecha:

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

Convertir diapositivas a imágenes usando opciones TIFF

La clase TiffOptions le permite controlar el tamaño, la resolución y otras propiedades de la imagen TIFF renderizada.

El siguiente ejemplo renderiza la primera diapositiva como una imagen 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();
}

Convertir todas las diapositivas a imágenes

Itere a través de la colección de diapositivas para convertir toda la presentación en una serie de imágenes. Las diapositivas ocultas se incluyen a menos que las omita explícitamente.

El siguiente ejemplo renderiza cada diapositiva como una imagen JPEG con factores de escala horizontal y 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();
}

Crear salida de Metarchivo Mejorado

Enhanced Metafile (EMF) es útil cuando los gráficos vectoriales deben intercambiarse con Microsoft Office u otras aplicaciones Windows que admiten metafiles de Windows. A diferencia de una imagen basada en píxeles, un EMF puede conservar las operaciones de dibujo vectorial que se escalan sin la misma pérdida de nitidez. Sin embargo, EMF es principalmente un formato de compatibilidad para aplicaciones con soporte de metafiles de Windows, no un formato universal de intercambio. Además, el contenido complejo de las diapositivas, como imágenes de mapa de bits y algunos efectos, puede almacenarse como elementos rasterizados dentro del contenedor de metafile vectorial.

Exportar una diapositiva a EMF

El método ISlide.writeAsEmf escribe un ISlide en un flujo de destino en formato EMF. El siguiente ejemplo carga una presentación, selecciona la primera diapositiva y la escribe en un flujo de archivo 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();
}

El llamador es propietario del flujo pasado a ISlide.writeAsEmf y es responsable de cerrarlo, como se muestra arriba.

Convertir una imagen SVG a EMF e insertarla en una presentación

Utilice ISvgImage.writeAsEmf para convertir contenido SVG a EMF. Los bytes resultantes pueden añadirse a la presentación mediante IImageCollection.addImage y colocarse en una diapositiva con IShapeCollection.addPictureFrame.

El siguiente ejemplo crea un SvgImage a partir de marcado SVG, lo convierte en un EMF en memoria, inserta el metafile en la primera diapositiva y guarda la presentación:

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 no asume la propiedad del flujo de destino. Un ByteArrayOutputStream almacena todos los datos generados en memoria, por lo que no es necesario restablecer la posición antes de llamar a toByteArray. El arreglo de bytes devuelto sigue siendo válido después de que se cierra el flujo.

La generación de EMF está disponible en las versiones de Android y configuraciones de dispositivos compatibles, pero la renderización puede variar cuando faltan fuentes o dependencias gráficas. Instale las fuentes usadas por el contenido origen o configure sustituciones adecuadas, siga la guía de instalación para Aspose.Slides for Android via Java, y valide el resultado en la aplicación receptora de EMF. Las aplicaciones en plataformas no Windows a menudo tienen soporte limitado o inconsistente para mostrar y editar metafiles de Windows.

Renderizado de Emoji en Color

Preguntas frecuentes

¿Aspose.Slides admite renderizar diapositivas con animaciones?

No. El método ISlide.getImage renderiza una imagen estática de la diapositiva y no exporta animaciones.

¿Se pueden exportar las diapositivas ocultas como imágenes?

Sí. Las diapositivas ocultas pueden renderizarse como diapositivas normales. Inclúyalas en el bucle de procesamiento, como se muestra en el ejemplo anterior.

¿Se conservan las sombras y otros efectos en las imágenes de diapositivas?

Sí. Aspose.Slides renderiza sombras, transparencia y otros efectos gráficos compatibles en las imágenes de diapositivas.