Преобразование слайдов PowerPoint в PNG на JavaScript

Обзор

В этой статье объясняется, как преобразовать слайды презентаций в изображения PNG с помощью Aspose.Slides for Node.js via Java. Вы можете загружать презентации в форматах, таких как PPT, PPTX и ODP, отрисовывать каждый слайд и сохранять его как отдельное изображение PNG.

Приведённые ниже примеры демонстрируют рендеринг с масштабом по умолчанию, увеличение масштаба, указание размеров вывода в пикселях и выбор стиля рендеринга градиента.

Преобразование PowerPoint в PNG

Загрузите презентацию с помощью класса Presentation и получите доступ к её слайдам через коллекцию Presentation.getSlides. В примере каждый слайд рендерится с помощью Slide.getImage без параметров для создания миниатюры. Затем вызывается IImage.save с ImageFormat.Png для сохранения каждого отрисованного слайда в виде изображения PNG.

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

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let slideCount = presentation.getSlides().size();
    for (let index = 0; index < slideCount; index++) {
        let slide = presentation.getSlides().get_Item(index);
        let image = slide.getImage();
        try {
            image.save("slide_" + index + ".png", aspose.slides.ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Преобразование PowerPoint в PNG с пользовательскими размерами

Передайте горизонтальные и вертикальные коэффициенты масштабирования в Slide.getImage, чтобы контролировать отрисованные размеры. В этом примере оба коэффициента равны 2, поэтому слайд размером 720 × 540 пунктов даёт изображение 1440 × 1080 пикселей. Равные коэффициенты сохраняют соотношение сторон слайда. Каждое изображение сохраняется в формате PNG с помощью IImage.save.

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

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let scaleX = 2.0;
    let scaleY = scaleX;

    let slideCount = presentation.getSlides().size();
    for (let index = 0; index < slideCount; index++) {
        let slide = presentation.getSlides().get_Item(index);
        let image = slide.getImage(scaleX, scaleY);
        try {
            image.save("slide_" + index + ".png", aspose.slides.ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Преобразование PowerPoint в PNG с пользовательским размером

Чтобы задать размеры вывода в пикселях, передайте размер в Slide.getImage вместо коэффициентов масштабирования. В этом примере каждый слайд рендерится с размерами 960 × 720 пикселей и результат сохраняется с помощью IImage.save. Выберите размеры, соответствующие соотношению сторон слайда, чтобы избежать искажения изображения.

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

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let imageSize = java.newInstanceSync("java.awt.Dimension", 960, 720);

    let slideCount = presentation.getSlides().size();
    for (let index = 0; index < slideCount; index++) {
        let slide = presentation.getSlides().get_Item(index);
        let image = slide.getImage(imageSize);
        try {
            image.save("slide_" + index + ".png", aspose.slides.ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Выбор стиля рендеринга градиента

Предположим, что слайд содержит градиентные заливки, но переходы в экспортированном PNG выглядят светлее или иначе отличаются от того, что вы видите в PowerPoint. Вы можете использовать метод SaveOptions.setGradientStyle, унаследованный от RenderingOptions, чтобы выбрать способ рендеринга градиентов.

Скачайте gradient-styles.pptx и поместите его в рабочий каталог приложения. Его первый слайд содержит два линейных градиента: от голубого к оранжевому вверху и от синего к жёлтому внизу. Каждый градиент имеет две остановки — на 0 % и 100 %.

Следующий пример загружает эту презентацию и рендерит один и тот же первый слайд в обоих режимах с помощью Slide.getImage.

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

let presentation = new aspose.slides.Presentation("gradient-styles.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);

    let gradientStyles = [aspose.slides.GradientStyle.Default, aspose.slides.GradientStyle.PowerPointUI];
    for (let style of gradientStyles) {
        let options = new aspose.slides.RenderingOptions();
        options.setGradientStyle(style);

        let styleName = style == aspose.slides.GradientStyle.Default ? "Default" : "PowerPointUI";
        let image = slide.getImage(options, 1.0, 1.0);
        try {
            image.save("gradient-" + styleName + ".png", aspose.slides.ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Ниже приведённые изображения показывают результат одного и того же слайда, с обоими градиентами на каждом изображении:

Default PowerPointUI
Градиенты от голубого к оранжевому и от синего к жёлтому, отрендеренные с Default Те же градиенты, отрендеренные с PowerPointUI

В этом примере Default дает более светлые промежуточные цвета, тогда как PowerPointUI – более тёмные промежуточные цвета. Разница зависит от цветов и остановок в градиенте.

Выбирайте Default, если стандартный вывод Aspose.Slides вас устраивает. Попробуйте PowerPointUI, когда приоритетом является соответствие внешнему виду в PowerPoint. Сравните оба вывода с ожидаемым результатом; ни один режим не является универсально предпочтительным.

FAQ

Как экспортировать конкретную форму, например диаграмму или изображение, вместо всего слайда?

Aspose.Slides поддерживает создание миниатюр для отдельных фигур, что позволяет рендерить форму как PNG‑изображение.

Поддерживается ли параллельное преобразование на сервере?

Да. Используйте отдельный экземпляр презентации для каждого потока или процесса; не делитесь одним экземпляром между потоками.

Каковы ограничения оценочной версии при экспорте в PNG?

В режиме оценки к выводимым изображениям добавляется водяной знак и применяются другие ограничения, пока не будет применена лицензия.