Präsentationsfolien in JavaScript in Bilder konvertieren

Einführung

Aspose.Slides für Node.js über 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:

  1. Laden Sie die Präsentation mit der Klasse Presentation .
  2. Wählen Sie die Folie aus, die Sie rendern möchten.
  3. Falls erforderlich, konfigurieren Sie das Rendern mit der Klasse RenderingOptions oder TiffOptions .
  4. Rufen Sie die Methode Slide.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.

Eine Folie in ein PNG‑Bild konvertieren

Die einfachste Konvertierung verwendet die standardmäßigen Rendereinstellungen. Das resultierende IImage‑Objekt kann im Speicher verarbeitet oder in einer Datei gespeichert werden.

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

const aspose = {};
aspose.slides = require("aspose.slides.via.java");

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);

    const image = slide.getImage();
    try {
        image.save("Slide_0.png", aspose.slides.ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Folien in Bilder mit benutzerdefinierten Größen konvertieren

Verwenden Sie die Überladung von Slide.getImage, die einen Wert vom Typ java.awt.Dimension akzeptiert, um eine Folie mit genauen Pixelmaßen zu rendern.

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

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const imageSize = java.newInstanceSync("java.awt.Dimension", 1820, 1040);

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);

    const image = slide.getImage(imageSize);
    try {
        image.save("Slide_0.jpg", aspose.slides.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 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:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const scaleX = 2;
const scaleY = scaleX;

const commentsAreaColor = java.newInstanceSync("java.awt.Color", 250, 235, 215);

const layoutOptions = new aspose.slides.NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(aspose.slides.NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(aspose.slides.CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);

const renderingOptions = new aspose.slides.RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);

    const image = slide.getImage(renderingOptions, scaleX, scaleY);
    try {
        image.save("Image_with_notes_and_comments_0.gif", aspose.slides.ImageFormat.Gif);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Folien in Bilder mit TIFF‑Optionen 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:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const imageSize = java.newInstanceSync("java.awt.Dimension", 2160, 2880);

const tiffOptions = new aspose.slides.TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);

    const image = slide.getImage(tiffOptions);
    try {
        image.save("output.tiff", aspose.slides.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 explizit überspringen.

Das folgende Beispiel rendert jede Folie als JPEG‑Bild mit horizontalen und vertikalen Skalierungsfaktoren von 2:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");

const scaleX = 2;
const scaleY = scaleX;

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slideCount = presentation.getSlides().size();
    for (let index = 0; index < slideCount; index++) {
        const slide = presentation.getSlides().get_Item(index);
        const image = slide.getImage(scaleX, scaleY);
        try {
            image.save("Slide_" + index + ".jpg", aspose.slides.ImageFormat.Jpeg);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Enhanced‑Metafile‑Ausgabe erstellen

Enhanced Metafile (EMF) ist nützlich, wenn vektorbasierte Grafiken mit Microsoft Office oder anderen Windows‑Anwendungen, die Windows‑Metafiles unterstützen, ausgetauscht werden müssen. Im Gegensatz zu einem pixelbasierten Bild kann ein EMF Vektor‑Zeichenvorgänge beibehalten, die sich skalieren lassen, ohne an Schärfe zu verlieren. EMF ist jedoch hauptsächlich ein Kompatibilitätsformat für Anwendungen mit Windows‑Metafile‑Unterstützung und kein universelles Austauschformat. Darüber hinaus können komplexe Folieninhalte, wie Raster‑Bilder und einige Effekte, als gerasterte Elemente im Vektor‑Metafile‑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:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);

    const emfStream = java.newInstanceSync("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ßung verantwortlich, wie oben gezeigt.

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

Verwenden Sie SvgImage.writeAsEmf, um SVG‑Inhalt 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 In‑Memory‑EMF, fügt das Metafile in die erste Folie ein und speichert die Präsentation:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

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

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    const emfStream = java.newInstanceSync("java.io.ByteArrayOutputStream");
    try {
        svgImage.writeAsEmf(emfStream);

        const emfData = java.newArray("byte", Array.from(emfStream.toByteArray()));
        const image = presentation.getImages().addImage(emfData);
        slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 20, 20, 200, 100, image);
    } finally {
        emfStream.close();
    }

    presentation.save("Presentation_with_emf.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

SvgImage.writeAsEmf übernimmt keinen Besitz des Ziel‑Streams. Ein java.io.ByteArrayOutputStream speichert alle generierten Daten im Speicher, sodass vor dem Aufruf von toByteArray kein Positions‑Reset erforderlich ist. Das zurückgegebene Byte‑Array bleibt nach dem Schließen des Streams gültig.

EMF‑Generierung ist auf den von der ausgewählten Aspose.Slides‑Version für Node.js über Java und der JDK‑Konfiguration unterstützten Betriebssystemen verfügbar, jedoch kann das Rendern plattformabhängig variieren, wenn Schriftarten oder Grafik‑Abhängigkeiten fehlen. Installieren Sie die im Quellinhalt verwendeten Schriftarten oder konfigurieren Sie geeignete Ersatzschriften, folgen Sie den Plattformanforderungen für Aspose.Slides für Node.js über Java und prüfen Sie das Ergebnis in der Ziel‑Anwendung, die EMF verwendet. Linux‑ und macOS‑Anwendungen haben häufig nur eingeschränkte oder inkonsistente Unterstützung für die Anzeige und Bearbeitung von Windows‑Metafiles.

Farb‑Emoji‑Rendering

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. Binden Sie sie in die Verarbeitungsschleife ein, wie im obigen Beispiel gezeigt.

Werden Schatten und andere Effekte in Folienbildern beibehalten?

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