Преобразование слайдов PowerPoint в PNG на Python
Обзор
В этой статье объясняется, как преобразовать слайды презентации в изображения PNG с помощью Aspose.Slides для Python через Java. Вы можете загружать презентации в форматах PPT, PPTX и ODP, рендерить каждый слайд и сохранять его как отдельное изображение PNG.
Ниже приведённые примеры демонстрируют рендеринг с масштабом по умолчанию, увеличение масштаба, указание размеров вывода в пикселях и выбор стиля рендеринга градиентов.
Конвертировать PowerPoint в PNG
Загрузите презентацию с помощью класса Presentation и получите доступ к её слайдам через коллекцию Presentation.getSlides. В примере каждый слайд рендерится с помощью Slide.getImage без параметров для создания миниатюры. Затем вызывается IImage.save с ImageFormat.Png для сохранения каждого отрендеренного слайда в формате PNG.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("presentation.pptx")
try:
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage()
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Note
Перегрузка Slide.getImage без параметров рендерит с масштабом 0.2. Например, слайд размером 720 × 540 пунктов создаёт миниатюру 144 × 108 пикселей. Чтобы управлять размерами вывода, используйте перегрузки с коэффициентами масштабирования или явно указанный размер изображения, как показано ниже.Конвертировать PowerPoint в PNG с пользовательскими размерами
Передайте горизонтальные и вертикальные коэффициенты масштабирования в Slide.getImage, чтобы контролировать размеры рендеринга. В этом примере оба коэффициента равны 2, поэтому слайд размером 720 × 540 пунктов создаёт изображение 1440 × 1080 пикселей. Равные коэффициенты сохраняют соотношение сторон слайда. Каждое отрендеренное изображение сохраняется в формате PNG.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("presentation.pptx")
try:
scale_x = 2.0
scale_y = scale_x
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage(scale_x, scale_y)
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Конвертировать PowerPoint в PNG с пользовательским размером
Чтобы указать размеры вывода в пикселях, передайте размер в Slide.getImage вместо коэффициентов масштабирования. В этом примере каждый слайд рендерится с размером 960 × 720 пикселей и сохраняется в формате PNG. Выбирайте размеры, соответствующие соотношению сторон слайда, чтобы избежать растягивания изображения.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension
presentation = Presentation("presentation.pptx")
try:
image_size = Dimension(960, 720)
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage(image_size)
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Выбор стиля рендеринга градиента
Предположим, что слайд содержит градиентные заливки, но переходы в экспортированном PNG выглядят светлее или иначе, чем в PowerPoint. Вы можете использовать метод SaveOptions.setGradientStyle, унаследованный от RenderingOptions, чтобы выбрать способ рендеринга градиентов.
Скачайте gradient-styles.pptx и поместите его в рабочий каталог приложения. Первый слайд содержит два линейных градиента: от голубого к оранжевому сверху и от синего к желтому снизу. Каждый градиент имеет две остановки — на 0% и 100%.
В следующем примере эта презентация загружается и первый слайд рендерится в обоих режимах с помощью Slide.getImage.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import GradientStyle, ImageFormat, Presentation, RenderingOptions
presentation = Presentation("gradient-styles.pptx")
try:
slide = presentation.getSlides().get_Item(0)
gradient_styles = (GradientStyle.Default, GradientStyle.PowerPointUI)
for style in gradient_styles:
options = RenderingOptions()
options.setGradientStyle(style)
style_name = "Default" if style == GradientStyle.Default else "PowerPointUI"
image = slide.getImage(options, 1.0, 1.0)
try:
image.save(f"gradient-{style_name}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
| Default | PowerPointUI |
|---|---|
![]() |
![]() |
В этом примере Default создаёт более светлые промежуточные цвета, тогда как PowerPointUI создаёт более тёмные промежуточные цвета. Разница зависит от цветов и остановок в градиенте.
Выбирайте Default, если стандартный вывод Aspose.Slides вас устраивает. Попробуйте PowerPointUI, если вашей целью является точное соответствие внешнему виду в PowerPoint. Сравните оба результата с желаемым результатом; ни один из режимов не является универсально лучшим.
FAQ
Как я могу экспортировать конкретную форму, например диаграмму или изображение, вместо всего слайда?
Aspose.Slides поддерживает создание миниатюр для отдельных фигур, позволяя рендерить фигуру в виде изображения PNG.
Поддерживается ли параллельное преобразование на сервере?
Да. Используйте отдельный экземпляр презентации для каждого потока или процесса; не делить один экземпляр между потоками.
Каковы ограничения оценки при экспорте в PNG?
Режим оценки добавляет водяной знак к выходным изображениям и применяет другие ограничения, пока лицензия не будет применена.

