Präsentationsfolien auf Android in Bilder konvertieren

Einführung

Aspose.Slides für Android via Java kann einzelne Folien aus PowerPoint- und OpenDocument‑Präsentationen als PNG, JPEG, GIF, TIFF und andere Bildformate rendern.

Um eine Folie in ein Bild zu konvertieren, befolgen Sie diese Schritte:

  1. Laden Sie die Präsentation mit der Presentation Klasse.
  2. Wählen Sie die Folie aus, die Sie rendern möchten.
  3. Falls nötig, konfigurieren Sie das Rendering mit der RenderingOptions oder der TiffOptions Klasse.
  4. Rufen Sie die Methode ISlide.getImage auf. Sie gibt ein Objekt vom Typ IImage zurück.
  5. Rufen Sie die Methode IImage.save auf und geben Sie das Ausgabeformat mit einem Wert vom Typ ImageFormat an.

Konvertieren einer Folie in ein PNG‑Bild

Die einfachste Konvertierung verwendet die Standard‑Rendering‑Einstellungen. Das resultierende IImage‑Objekt kann im Speicher verarbeitet oder in einer Datei gespeichert werden.

Das folgende Java‑Beispiel rendert die erste Folie und speichert sie als PNG‑Bild:

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

Konvertieren von Folien in Bilder mit benutzerdefinierten Größen

Verwenden Sie die Überladung ISlide.getImage , die einen Size‑Wert akzeptiert, um eine Folie mit genauen Pixelabmessungen zu rendern.

Das folgende Beispiel erstellt ein 1820 × 1040‑JPEG‑Bild:

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

Konvertieren von Folien mit Notizen und Kommentaren in Bilder

Standardmäßig enthalten Folienbilder keine Notizen oder Kommentare. Übergeben Sie ein Objekt vom Typ NotesCommentsLayoutingOptions an die Methode RenderingOptions.setSlidesLayoutOptions , um zu steuern, wo Notizen und Kommentare angezeigt werden.

Das folgende Beispiel platziert gekürzte Notizen unterhalb der Folie und Kommentare rechts davon:

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

Konvertieren von Folien in Bilder mit TIFF‑Optionen

Die Klasse TiffOptions ermöglicht es Ihnen, Größe, Auflösung und andere Eigenschaften des gerenderten TIFF‑Bildes zu steuern.

Das folgende Beispiel rendert die erste Folie als 2160 × 2880‑TIFF‑Bild mit 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();
}

Alle Folien in Bilder konvertieren

Iterieren Sie über die Folienkollektion, um die gesamte Präsentation in eine Reihe von Bildern zu konvertieren. Versteckte Folien werden einbezogen, sofern Sie sie nicht ausdrücklich überspringen.

Das folgende Beispiel rendert jede Folie als JPEG‑Bild mit horizontalen und vertikalen Skalierungsfaktoren von 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();
}

Ausgabe im Enhanced Metafile‑Format erstellen

Enhanced Metafile (EMF) ist nützlich, wenn vektorbasierte Grafiken mit Microsoft Office oder anderen Windows‑Anwendungen ausgetauscht werden müssen, die Windows‑Metadateien unterstützen. Im Gegensatz zu einem pixelbasierten Bild kann ein EMF Vektor‑Zeichnungsoperationen beibehalten, die sich skalieren lassen, ohne dass die Schärfe verloren geht. EMF ist jedoch hauptsächlich ein Kompatibilitätsformat für Anwendungen mit Windows‑Metadatei‑Unterstützung und kein universelles Austauschformat. Darüber hinaus können komplexe Folieninhalte, wie Bitmap‑Bilder und einige Effekte, als gerasterte Elemente im Vektor‑Metadatei‑Container gespeichert werden.

Eine Folie als EMF exportieren

Die Methode ISlide.writeAsEmf schreibt ein ISlide in einen Ziel‑Stream im EMF‑Format. Das folgende Beispiel lädt eine Präsentation, wählt die erste Folie aus und schreibt sie in einen EMF‑Dateistream:

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

Der Aufrufer besitzt den an ISlide.writeAsEmf übergebenen Stream und ist für das Schließen verantwortlich, wie oben gezeigt.

Ein SVG‑Bild in EMF konvertieren und einer Präsentation hinzufügen

Verwenden Sie ISvgImage.writeAsEmf, um SVG‑Inhalte in EMF zu konvertieren. Die resultierenden Bytes können über IImageCollection.addImage zur Präsentation hinzugefügt und mit IShapeCollection.addPictureFrame auf einer Folie platziert werden.

Das folgende Beispiel erstellt ein SvgImage aus SVG‑Markup, konvertiert es in ein EMF im Speicher, fügt die Metadatei auf der ersten Folie ein und speichert die 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 übernimmt den Ziel‑Stream nicht. Ein ByteArrayOutputStream speichert alle erzeugten Daten im Speicher, sodass vor dem Aufruf von toByteArray kein Zurücksetzen der Position erforderlich ist. Das zurückgegebene Byte‑Array bleibt nach dem Schließen des Streams gültig.

Die EMF‑Erzeugung ist auf unterstützten Android‑Versionen und Gerätekonfigurationen verfügbar, jedoch kann das Rendering variieren, wenn Schriftarten oder Grafik‑Abhängigkeiten nicht vorhanden sind. Installieren Sie die von den Quelldaten verwendeten Schriftarten oder konfigurieren Sie geeignete Ersatz‑Schriften, folgen Sie dem installations guide für Aspose.Slides für Android via Java und prüfen Sie das Ergebnis in der Ziel‑EMF‑verarbeitenden Anwendung. Anwendungen auf Nicht‑Windows‑Plattformen haben oft nur eingeschränkte oder inkonsistente Unterstützung für das Anzeigen und Bearbeiten von Windows‑Metadateien.

Farb‑Emoji‑Rendering

FAQ

Unterstützt Aspose.Slides das Rendern von Folien mit Animationen?

Nein. Die Methode ISlide.getImage rendert ein statisches Bild der Folie und exportiert keine Animationen.

Können versteckte Folien als Bilder exportiert werden?

Ja. Versteckte Folien können wie reguläre Folien gerendert werden. Binden Sie sie in die Verarbeitungsschleife ein, wie im obigen Beispiel gezeigt.

Werden Schatten und andere Effekte in Folienbildern erhalten?

Ja. Aspose.Slides rendert Schatten, Transparenz und andere unterstützte grafische Effekte in Folienbildern.