Convertir des diapositives de présentation en images sur Android

Introduction

Aspose.Slides for Android via Java peut rendre des diapositives individuelles à partir de présentations PowerPoint et OpenDocument au format PNG, JPEG, GIF, TIFF et d’autres formats d’image.

Pour convertir une diapositive en image, suivez ces étapes :

  1. Chargez la présentation avec la classe Presentation.
  2. Sélectionnez la diapositive que vous souhaitez rendre.
  3. Si nécessaire, configurez le rendu avec la classe RenderingOptions ou TiffOptions.
  4. Appelez la méthode ISlide.getImage. Elle renvoie un objet IImage.
  5. Appelez la méthode IImage.save et spécifiez le format de sortie avec une valeur ImageFormat.

Convertir une diapositive en image PNG

La conversion la plus simple utilise les paramètres de rendu par défaut. L’objet IImage résultant peut être traité en mémoire ou enregistré dans un fichier.

L’exemple Java suivant rend la première diapositive et l’enregistre en tant qu’image 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 des diapositives en images avec des tailles personnalisées

Utilisez la surcharge ISlide.getImage qui accepte une valeur Size pour rendre une diapositive avec des dimensions en pixels précises.

L’exemple suivant crée une image 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 des diapositives avec notes et commentaires en images

Par défaut, les images de diapositives n’incluent pas les notes ni les commentaires. Passez un objet NotesCommentsLayoutingOptions à la méthode RenderingOptions.setSlidesLayoutOptions pour contrôler l’emplacement des notes et des commentaires.

L’exemple suivant place des notes tronquées sous la diapositive et les commentaires à sa droite :

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 des diapositives en images avec les options TIFF

La classe TiffOptions vous permet de contrôler la taille, la résolution et d’autres propriétés de l’image TIFF rendue.

L’exemple suivant rend la première diapositive en image TIFF de 2160 × 2880 à 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 toutes les diapositives en images

Parcourez la collection de diapositives pour convertir l’ensemble de la présentation en une série d’images. Les diapositives masquées sont incluses sauf si vous les excluez explicitement.

L’exemple suivant rend chaque diapositive en image JPEG avec des facteurs d’échelle horizontaux et verticaux 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();
}

Créer une sortie Enhanced Metafile

Enhanced Metafile (EMF) est utile lorsque des graphiques vectoriels doivent être échangés avec Microsoft Office ou d’autres applications Windows qui prennent en charge les métas fichiers Windows. Contrairement à une image basée sur les pixels, un EMF peut conserver les opérations de dessin vectoriel qui s’échelonnent sans perte de netteté. Cependant, EMF est principalement un format de compatibilité pour les applications disposant d’un support de métas fichiers Windows, et non un format d’échange universel. De plus, le contenu complexe d’une diapositive, tel que les images bitmap et certains effets, peut être stocké sous forme d’éléments rasterisés à l’intérieur du conteneur de métas fichier vectoriel.

Exporter une diapositive en EMF

La méthode ISlide.writeAsEmf écrit un ISlide dans un flux cible au format EMF. L’exemple suivant charge une présentation, sélectionne la première diapositive et l’écrit dans un flux de fichier 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();
}

L’appelant possède le flux passé à ISlide.writeAsEmf et est responsable de le fermer, comme indiqué ci‑dessus.

Convertir une image SVG en EMF et l’ajouter à une présentation

Utilisez ISvgImage.writeAsEmf pour convertir le contenu SVG en EMF. Les octets résultants peuvent être ajoutés à la présentation via IImageCollection.addImage et placés sur une diapositive avec IShapeCollection.addPictureFrame.

L’exemple suivant crée un SvgImage à partir de balisage SVG, le convertit en EMF en mémoire, insère le métas fichier sur la première diapositive et enregistre la présentation :

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 ne prend pas possession du flux de destination. Un ByteArrayOutputStream stocke toutes les données générées en mémoire, ainsi aucun réinitialisation de position n’est nécessaire avant d’appeler toByteArray. Le tableau d’octets retourné reste valide après la fermeture du flux.

La génération d’EMF est disponible sur les versions Android prises en charge et les configurations d’appareils, mais le rendu peut différer lorsque les polices ou les dépendances graphiques sont indisponibles. Installez les polices utilisées par le contenu source ou configurez des substitutions appropriées, suivez le guide d’installation pour Aspose.Slides for Android via Java, et validez le résultat dans l’application cible qui consomme les EMF. Les applications sur des plates‑formes non Windows ont souvent un support limité ou incohérent pour l’affichage et la modification des métas fichiers Windows.

Rendu des emoji couleur

FAQ

Aspose.Slides supporte‑t‑il le rendu des diapositives avec animations ?

Non. La méthode ISlide.getImage rend une image statique de la diapositive et n’exporte pas les animations.

Les diapositives masquées peuvent‑elles être exportées en images ?

Oui. Les diapositives masquées peuvent être rendues comme des diapositives normales. Incluez‑les dans la boucle de traitement, comme montré dans l’exemple ci‑dessus.

Les ombres et autres effets sont‑ils conservés dans les images de diapositives ?

Oui. Aspose.Slides rend les ombres, la transparence et d’autres effets graphiques pris en charge dans les images de diapositives.