Konvertieren von Präsentationsfolien zu Bildern in PHP
Einleitung
Aspose.Slides für PHP 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, führen Sie die folgenden Schritte aus:
- Laden Sie die Präsentation mit der Klasse Presentation .
- Wählen Sie die Folie aus, die Sie rendern möchten.
- Falls erforderlich, konfigurieren Sie das Rendering mit der Klasse RenderingOptions oder TiffOptions .
- Rufen Sie die Methode Slide::getImage auf. Sie gibt ein Objekt vom Typ IImage zurück.
- Rufen Sie die Methode IImage::save auf und geben Sie das Ausgabformat mit einem Wert vom Typ ImageFormat an.
Eine Folie in ein PNG-Bild konvertieren
Die einfachste Konvertierung verwendet die Standard-Rendering-Einstellungen. Das resultierende IImage Objekt kann im Speicher verarbeitet oder in einer Datei gespeichert werden.
Das folgende PHP-Beispiel rendert die erste Folie und speichert sie als PNG-Bild:
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$presentation = new Presentation("Presentation.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$image = $slide->getImage();
try {
$image->save("Slide_0.png", ImageFormat::Png);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Folien mit benutzerdefinierten Größen in Bilder konvertieren
Verwenden Sie die Überladung von Slide::getImage, die einen Dimension Wert akzeptiert, um eine Folie mit genauen Pixelmaßen zu rendern.
Das folgende Beispiel erzeugt ein 1820 × 1040 JPEG-Bild:
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$imageSize = new Java("java.awt.Dimension", 1820, 1040);
$presentation = new Presentation("Presentation.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$image = $slide->getImage($imageSize);
try {
$image->save("Slide_0.jpg", ImageFormat::Jpeg);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Folien mit Notizen und Kommentaren in Bilder konvertieren
Standardmäßig enthalten Folienbilder keine Notizen oder Kommentare. Übergeben Sie ein NotesCommentsLayoutingOptions‑Objekt an die Methode RenderingOptions::setSlidesLayoutOptions, um zu steuern, wo Notizen und Kommentare angezeigt werden.
Das folgende Beispiel positioniert gekürzte Notizen unterhalb der Folie und Kommentare rechts daneben:
use aspose\slides\CommentsPositions;
use aspose\slides\ImageFormat;
use aspose\slides\NotesCommentsLayoutingOptions;
use aspose\slides\NotesPositions;
use aspose\slides\Presentation;
use aspose\slides\RenderingOptions;
$scaleX = 2;
$scaleY = $scaleX;
$commentsAreaColor = new Java("java.awt.Color", 250, 235, 215);
$layoutOptions = new NotesCommentsLayoutingOptions();
$layoutOptions->setNotesPosition(NotesPositions::BottomTruncated);
$layoutOptions->setCommentsPosition(CommentsPositions::Right);
$layoutOptions->setCommentsAreaWidth(500);
$layoutOptions->setCommentsAreaColor($commentsAreaColor);
$renderingOptions = new RenderingOptions();
$renderingOptions->setSlidesLayoutOptions($layoutOptions);
$presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$image = $slide->getImage($renderingOptions, $scaleX, $scaleY);
try {
$image->save("Image_with_notes_and_comments_0.gif", ImageFormat::Gif);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Warnung
Für die Folien-zu-Bild-Konvertierung übergeben Sie nicht BottomFull an die Methode NotesCommentsLayoutingOptions::setNotesPosition. Notizen können mehr Text enthalten, als die feste Bildgröße aufnehmen kann. Verwenden Sie stattdessen BottomTruncated .Folien mit TIFF-Optionen in Bilder konvertieren
Die Klasse TiffOptions ermöglicht es Ihnen, Größe, Auflösung und weitere Eigenschaften des gerenderten TIFF-Bildes zu steuern.
Das folgende Beispiel rendert die erste Folie als 2160 × 2880 TIFF-Bild mit 300 DPI:
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
use aspose\slides\TiffOptions;
$imageSize = new Java("java.awt.Dimension", 2160, 2880);
$tiffOptions = new TiffOptions();
$tiffOptions->setImageSize($imageSize);
$tiffOptions->setDpiX(300);
$tiffOptions->setDpiY(300);
$presentation = new Presentation("sample.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$image = $slide->getImage($tiffOptions);
try {
$image->save("output.tiff", ImageFormat::Tiff);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Warnung
TIFF-Unterstützung ist in Java-Versionen vor JDK 9 nicht garantiert.Alle Folien in Bilder konvertieren
Iterieren Sie durch die Folien‑Sammlung, um die gesamte Präsentation in eine Reihe von Bildern zu konvertieren. Versteckte Folien werden einbezogen, sofern Sie sie nicht explizit überspringen.
Das folgende Beispiel rendert jede Folie als JPEG-Bild mit horizontalen und vertikalen Skalierungsfaktoren von 2:
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$scaleX = 2;
$scaleY = $scaleX;
$presentation = new Presentation("Presentation.pptx");
try {
$slideCount = java_values($presentation->getSlides()->size());
for ($index = 0; $index < $slideCount; $index++) {
$slide = $presentation->getSlides()->get_Item($index);
$image = $slide->getImage($scaleX, $scaleY);
try {
$image->save("Slide_" . $index . ".jpg", ImageFormat::Jpeg);
} finally {
$image->dispose();
}
}
} finally {
$presentation->dispose();
}
Enhanced Metafile-Ausgabe erstellen
Enhanced Metafile (EMF) ist nützlich, wenn vektorbasierten 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 Vektorzeichnungen 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 kann komplexer Folieninhalt, wie Bitmap‑Bilder und einige Effekte, als gerasterte Elemente im Vektor‑Metadatei‑Container gespeichert werden.
Eine Folie nach EMF exportieren
Die Methode Slide::writeAsEmf schreibt eine Folie 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:
use aspose\slides\Presentation;
$presentation = new Presentation("Presentation.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$emfStream = new Java("java.io.FileOutputStream", "Slide_0.emf");
try {
$slide->writeAsEmf($emfStream);
} finally {
$emfStream->close();
}
} finally {
$presentation->dispose();
}
Der Aufrufer besitzt den an Slide::writeAsEmf übergebenen Stream und ist für dessen Schließen verantwortlich, wie oben gezeigt.
Ein SVG‑Bild in EMF konvertieren und einer Präsentation hinzufügen
Verwenden Sie SvgImage::writeAsEmf, um SVG‑Inhalte in EMF zu konvertieren. Die resultierenden Bytes können über ImageCollection::addImage zur Präsentation hinzugefügt und mit ShapeCollection::addPictureFrame auf einer Folie platziert werden.
Das folgende Beispiel erstellt ein SvgImage aus SVG‑Markup, konvertiert es in ein EMF‑Bild im Speicher, fügt die Metadatei in die erste Folie ein und speichert die Präsentation:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\SvgImage;
$svgContent = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100"><rect width="200" height="100" fill="#4472C4"/></svg>';
$svgImage = new SvgImage($svgContent);
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$emfStream = new Java("java.io.ByteArrayOutputStream");
try {
$svgImage->writeAsEmf($emfStream);
$emfData = $emfStream->toByteArray();
$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();
}
SvgImage::writeAsEmf übernimmt keinen Besitz des Ziel‑Streams. 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 den von Aspose.Slides für PHP via Java und der JDK‑Konfiguration unterstützten Betriebssystemen verfügbar, jedoch kann das Rendering auf verschiedenen Plattformen variieren, wenn Schriftarten oder Grafik‑Abhängigkeiten nicht verfügbar sind. Installieren Sie die von den Quellinhalten verwendeten Schriftarten oder konfigurieren Sie geeignete Ersetzungen, befolgen Sie die Plattformanforderungen für Aspose.Slides für PHP via Java und prüfen Sie das Ergebnis in der Ziel‑EMF‑verwendenden Anwendung. Linux‑ und macOS‑Anwendungen haben oft nur begrenzte oder inkonsistente Unterstützung für die Anzeige und Bearbeitung von Windows‑Metadateien.
Farb‑Emoji‑Rendering
Hinweis
Um Farb‑Emojis beim Konvertieren von Präsentationsfolien in Bilder korrekt darzustellen, müssen die in der Präsentation verwendeten Emoji‑Schriftarten auf dem System, das die Konvertierung durchführt, installiert und verfügbar sein. Beispielsweise kann es vorkommen, dass Emojis in den Ausgabebildern monochrom erscheinen, wenn die Präsentation Segoe UI Emoji verwendet und diese Schriftart fehlt.FAQ
Unterstützt Aspose.Slides das Rendern von Folien mit Animationen?
Nein. Die Methode Slide::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. Schließen 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.