Convertir diapositivas de presentación a imágenes en .NET

Introducción

Aspose.Slides for .NET 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 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 usa la configuración de renderizado predeterminada. El objeto IImage resultante puede procesarse en memoria o guardarse en un archivo.

El siguiente ejemplo en C# renderiza la primera diapositiva y la guarda como una imagen PNG:

using Aspose.Slides;

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage();
image.Save("Slide_0.png", ImageFormat.Png);

Convertir diapositivas a imágenes con tamaños personalizados

Utilice la sobrecarga de 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:

using System.Drawing;
using Aspose.Slides;

var imageSize = new Size(1820, 1040);

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(imageSize);
image.Save("Slide_0.jpg", ImageFormat.Jpeg);

Convertir diapositivas con notas y comentarios a imágenes

De forma predeterminada, las imágenes de diapositivas no incluyen notas ni comentarios. Asigne un objeto NotesCommentsLayoutingOptions a la propiedad RenderingOptions.SlidesLayoutOptions para controlar dónde aparecen las notas y los comentarios.

El siguiente ejemplo coloca notas truncadas bajo la diapositiva y los comentarios a su derecha:

using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;

var scaleX = 2f;
var scaleY = scaleX;

var layoutOptions = new NotesCommentsLayoutingOptions
{
    NotesPosition = NotesPositions.BottomTruncated,
    CommentsPosition = CommentsPositions.Right,
    CommentsAreaWidth = 500,
    CommentsAreaColor = Color.AntiqueWhite
};

var renderingOptions = new RenderingOptions { SlidesLayoutOptions = layoutOptions };

using var presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(renderingOptions, scaleX, scaleY);
image.Save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);

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:

using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;

var tiffOptions = new TiffOptions
{
    ImageSize = new Size(2160, 2880),
    DpiX = 300,
    DpiY = 300
};

using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(tiffOptions);
image.Save("output.tiff", ImageFormat.Tiff);

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:

using Aspose.Slides;

var scaleX = 2f;
var scaleY = scaleX;

using var presentation = new Presentation("Presentation.pptx");

var slideCount = presentation.Slides.Count;
for (var index = 0; index < slideCount; index++)
{
    var slide = presentation.Slides[index];
    using var image = slide.GetImage(scaleX, scaleY);
    image.Save($"Slide_{index}.jpg", ImageFormat.Jpeg);
}

Crear salida Enhanced Metafile

Enhanced Metafile (EMF) es útil cuando se deben intercambiar gráficos vectoriales con Microsoft Office u otras aplicaciones de Windows que admiten metarchivos 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 metarchivos de Windows, no un formato universal de intercambio. Además, el contenido complejo de la diapositiva, como imágenes de mapa de bits y algunos efectos, puede almacenarse como elementos rasterizados dentro del contenedor de metarchivo 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:

using System.IO;
using Aspose.Slides;

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var emfStream = File.Create("Slide_0.emf");
slide.WriteAsEmf(emfStream);

El llamador es responsable del flujo pasado a ISlide.WriteAsEmf y debe cerrarlo o disponerlo. Aspose.Slides escribe en la posición actual del flujo y deja el flujo abierto.

Convertir una imagen SVG a EMF y añadirla a 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 a un EMF en memoria, inserta el metarchivo en la primera diapositiva y guarda la presentación:

using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;

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

using var presentation = new Presentation();
var slide = presentation.Slides[0];

using var emfStream = new MemoryStream();
svgImage.WriteAsEmf(emfStream);

emfStream.Position = 0;
var image = presentation.Images.AddImage(emfStream);
slide.Shapes.AddPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);

presentation.Save("Presentation_with_emf.pptx", SaveFormat.Pptx);

ISvgImage.WriteAsEmf no toma posesión del flujo de destino. Después de escribir, la posición del flujo está al final de los datos generados. Restablezca Position al principio antes de pasar el mismo flujo buscable a un lector, como se muestra arriba. Mantenga el flujo abierto hasta que el consumidor haya terminado de leerlo y dispóngalo después. Alternativamente, llame a ToArray y pase el arreglo de bytes devuelto a IImageCollection.AddImage; ToArray devuelve el búfer completo sin importar la posición actual del flujo.

La generación de EMF está disponible en los sistemas operativos compatibles con la compilación seleccionada de Aspose.Slides for .NET, pero la renderización puede variar entre plataformas cuando faltan fuentes o dependencias gráficas nativas. Instale las fuentes usadas por el contenido de origen o configure sustituciones adecuadas, siga los requisitos de plataforma para su paquete Aspose.Slides y valide el resultado en la aplicación que consumirá el EMF. Las aplicaciones Linux y macOS a menudo tienen soporte limitado o inconsistente para mostrar y editar metarchivos de Windows.

Renderizado de emoji en color

Preguntas frecuentes

¿Aspose.Slides admite renderizar diapositivas con animaciones?

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

¿Se pueden exportar 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, transparencias y otros efectos gráficos compatibles en las imágenes de diapositivas.