Преобразовать слайды PowerPoint в PNG на Android

Обзор

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

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

Конвертировать PowerPoint в PNG

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

import com.aspose.slides.*;

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();
        try {
            image.save("slide_" + index + ".png", ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    float scaleX = 2f;
    float scaleY = scaleX;

    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 + ".png", ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

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

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

import com.aspose.slides.*;
import com.aspose.slides.android.Size;

Presentation presentation = new Presentation("presentation.pptx");
try {
    Size imageSize = new Size(960, 720);

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

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

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

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

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

import com.aspose.slides.*;

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

    int[] gradientStyles = { GradientStyle.Default, GradientStyle.PowerPointUI };
    for (int style : gradientStyles) {
        RenderingOptions options = new RenderingOptions();
        options.setGradientStyle(style);

        String styleName = style == GradientStyle.Default ? "Default" : "PowerPointUI";
        IImage image = slide.getImage(options, 1f, 1f);
        try {
            image.save("gradient-" + styleName + ".png", ImageFormat.Png);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

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

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

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

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

Часто задаваемые вопросы

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

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

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

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

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

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