Převod prezentace snímků na obrázky v JavaScriptu
Úvod
Aspose.Slides pro Node.js přes Java dokáže vykreslovat jednotlivé snímky z prezentací PowerPoint a OpenDocument jako PNG, JPEG, GIF, TIFF a další formáty obrázků.
Pro převod snímku na obrázek postupujte podle následujících kroků:
- Načtěte prezentaci pomocí třídy Presentation.
- Vyberte snímek, který chcete vykreslit.
- V případě potřeby nakonfigurujte vykreslování pomocí třídy RenderingOptions nebo TiffOptions.
- Zavolejte metodu Slide.getImage. Vrátí objekt typu IImage.
- Zavolejte metodu IImage.save a určete výstupní formát pomocí hodnoty ImageFormat.
Převod snímku na PNG obrázek
Nejjednodušší převod používá výchozí nastavení vykreslování. Výsledný objekt [IImage] lze zpracovat v paměti nebo uložit do souboru.
Následující JavaScriptový příklad vykreslí první snímek a uloží jej jako PNG obrázek:
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();
}
Převod snímků na obrázky s vlastními rozměry
Použijte přetíženou metodu [Slide.getImage], která akceptuje hodnotu java.awt.Dimension, pro vykreslení snímku s přesnými rozměry v pixelech.
Následující příklad vytvoří JPEG obrázek 1820 × 1040 pixelů:
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();
}
Převod snímků s poznámkami a komentáři na obrázky
Ve výchozím nastavení obrázky snímků neobsahují poznámky ani komentáře. Předávejte objekt NotesCommentsLayoutingOptions metodě RenderingOptions.setSlidesLayoutOptions, abyste určili, kde se poznámky a komentáře zobrazí.
Následující příklad umístí zkrácené poznámky pod snímek a komentáře vpravo od něj:
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();
}
Varování
Při převodu snímků na obrázky nepředávejte BottomFull metodě NotesCommentsLayoutingOptions.setNotesPosition. Poznámky mohou obsahovat více textu, než je možné zobrazit v pevně dané velikosti obrázku. Použijte místo toho BottomTruncated.Převod snímků na obrázky pomocí TIFF možností
Třída TiffOptions umožňuje řídit velikost, rozlišení a další vlastnosti vykresleného TIFF obrázku.
Následující příklad vykreslí první snímek jako TIFF obrázek 2160 × 2880 pixelů při 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();
}
Varování
Podpora TIFF není zaručena ve verzích Javy starších než JDK 9.Převod všech snímků na obrázky
Procházejte kolekci snímků a převádějte celou prezentaci na řadu obrázků. Skryté snímky jsou zahrnuty, pokud je explicitně nevynecháte.
Následující příklad vykreslí každý snímek jako JPEG obrázek se horizontálním a vertikálním měřítkem 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();
}
Vytvoření výstupu Enhanced Metafile
Enhanced Metafile (EMF) je užitečný, když je potřeba vyměňovat vektorovou grafiku s Microsoft Office nebo jinými Windows aplikacemi podporujícími Windows metafily. Na rozdíl od rastrového obrázku může EMF zachovat vektorové kreslicí operace, které se škálují bez ztráty ostrosti. EMF však slouží především jako formát kompatibility pro aplikace s podporou Windows metafilů, nikoli jako univerzální výměnný formát. Navíc složitý obsah snímku, jako jsou bitmapové obrázky a některé efekty, může být uložen jako rasterizované prvky uvnitř vektorového kontejneru.
Exportovat snímek do EMF
Metoda Slide.writeAsEmf zapíše snímek do cílového proudu ve formátu EMF. Následující příklad načte prezentaci, vybere první snímek a zapíše jej do EMF souborového proudu:
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();
}
Volající vlastní proud předaný metodě Slide.writeAsEmf a je zodpovědný za jeho uzavření, jak je ukázáno výše.
Převést SVG obrázek do EMF a přidat jej do prezentace
Použijte SvgImage.writeAsEmf k převodu SVG obsahu do EMF. Výsledná bajtová data lze přidat do prezentace pomocí ImageCollection.addImage a umístit na snímek pomocí ShapeCollection.addPictureFrame.
Následující příklad vytvoří SvgImage ze SVG značkování, převádí jej do paměťového EMF, vloží metafil na první snímek a uloží prezentaci:
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 nepřebírá vlastnictví cílového proudu. java.io.ByteArrayOutputStream ukládá veškerá generovaná data v paměti, takže před voláním toByteArray není nutné resetovat pozici. Vrácené pole bajtů zůstává platné i po uzavření proudu.
Generování EMF je k dispozici na operačních systémech podporovaných vybranou verzí Aspose.Slides pro Node.js přes Java a konfigurací JDK, avšak vykreslování může mezi platformami lišit, pokud chybí písma nebo grafické závislosti. Nainstalujte písma používaná ve zdrojovém obsahu nebo nakonfigurujte vhodné náhrady, řiďte se požadavky na platformu pro Aspose.Slides pro Node.js přes Java a ověřte výsledek v cílové aplikaci konzumující EMF. Linuxové a macOS aplikace často mají omezenou nebo nekonzistentní podporu pro zobrazování a úpravu Windows metafilů.
Vykreslování barevných emoji
Poznámka
Aby se při převodu snímků prezentace na obrázky správně vykreslily barevné emoji, musí být nainstalována a dostupná emoji písma použité v prezentaci na systému, který převod provádí. Například pokud prezentace používá Segoe UI Emoji a toto písmo chybí, mohou se emoji ve výstupních obrázcích zobrazit černobíle.Často kladené otázky
Podporuje Aspose.Slides vykreslování snímků s animacemi?
Ne. Metoda Slide.getImage vykresluje statický obrázek snímku a neexportuje animace.
Lze skryté snímky exportovat jako obrázky?
Ano. Skryté snímky lze vykreslit stejně jako běžné snímky. Zahrňte je do zpracovatelského cyklu, jak je ukázáno v předchozím příkladu.
Zachovají se stíny a další efekty v obrázcích snímků?
Ano. Aspose.Slides vykresluje stíny, průhlednost a další podporované grafické efekty v obrázcích snímků.