在 Python 中将 PPT 和 PPTX 转换为 JPG

介绍

Aspose.Slides for Python via Java 可将 PowerPoint 和 OpenDocument 演示文稿(PPT、PPTX 和 ODP)转换为 JPEG 图像。您可以导出每一张幻灯片或选定的幻灯片,以创建缩略图、构建演示文稿查看器,或在网站或应用程序中嵌入幻灯片预览。

将 PowerPoint PPT/PPTX 转换为 JPG

  1. 使用Presentation加载演示文稿。
  2. 通过getSlides获取幻灯片集合。
  3. 调用Slide.getImage并传入水平和垂直缩放因子,以渲染每张幻灯片。
  4. 使用ImageFormat.Jpeg将每个渲染后的图像保存为 JPEG,然后释放图像资源。
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpime.startJVM()

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    for slide in presentation.getSlides():
        slide_image = slide.getImage(1.0, 1.0)
        try:
            slide_image.save(f"Slide_{slide.getSlideNumber()}.jpg", ImageFormat.Jpeg)
        finally:
            slide_image.dispose()
finally:
    presentation.dispose()

将 PowerPoint PPT/PPTX 转换为具有自定义尺寸的 JPG

根据所需的像素尺寸和原始幻灯片大小计算水平和垂直缩放因子,然后将其传递给Slide.getImage。以下示例为每张幻灯片目标生成 1200 × 800 像素的图像。

使用不同的缩放因子可能会拉伸幻灯片。若要保持宽高比,请对两个轴使用相同的缩放因子;这样生成的宽度和高度将遵循原始幻灯片的比例。

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    desired_width = 1200
    desired_height = 800
    slide_size = presentation.getSlideSize().getSize()
    scale_x = desired_width / slide_size.getWidth()
    scale_y = desired_height / slide_size.getHeight()

    for slide in presentation.getSlides():
        slide_image = slide.getImage(scale_x, scale_y)
        try:
            slide_image.save(f"Slide_{slide.getSlideNumber()}.jpg", ImageFormat.Jpeg)
        finally:
            slide_image.dispose()
finally:
    presentation.dispose()

在将幻灯片保存为图像时渲染备注和评论

使用NotesCommentsLayoutingOptions配置备注和评论,并通过RenderingOptions.setSlidesLayoutOptions应用布局。此示例将备注放在底部,超出部分截断,并在右侧 200 像素宽的区域显示评论。每个渲染后的幻灯片均保存为 JPG 图像。

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import CommentsPositions, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, Presentation, RenderingOptions
from java.awt import Dimension

presentation = Presentation("presentation.pptx")
try:
    layout_options = NotesCommentsLayoutingOptions()
    layout_options.setNotesPosition(NotesPositions.BottomTruncated)
    layout_options.setCommentsPosition(CommentsPositions.Right)
    layout_options.setCommentsAreaWidth(200)

    rendering_options = RenderingOptions()
    rendering_options.setSlidesLayoutOptions(layout_options)
    image_size = Dimension(740, 960)

    for slide in presentation.getSlides():
        slide_image = slide.getImage(rendering_options, image_size)
        try:
            slide_image.save(f"Slide_{slide.getSlideNumber()}.jpg", ImageFormat.Jpeg)
        finally:
            slide_image.dispose()
finally:
    presentation.dispose()

FAQ

可以一次将多个幻灯片或演示文稿转换为 JPG 吗?

可以。示例遍历所有幻灯片并为每张幻灯片保存一张 JPG。若要处理多个演示文稿,只需对每个输入文件重复转换,并使用不同的输出文件夹或唯一的文件名,以免覆盖图像。

图表、SmartArt、表格和形状会包含在图像中吗?

这些对象会作为幻灯片的一部分进行渲染。请确保转换环境中可用演示文稿使用的字体,以减少因字体替换而导致的差异。

导出大型演示文稿时如何降低内存使用?

一次处理一张图像,保存后立即释放图像资源,并避免使用不必要的大输出尺寸。内存需求取决于幻灯片内容和图像大小。

另请参阅