在 C++ 中将 PPT 和 PPTX 转换为 JPG

概述

将 PowerPoint 和 OpenDocument 演示文稿转换为 JPG 图像有助于共享幻灯片、优化性能以及将内容嵌入网站或应用程序。Aspose.Slides for C++ 允许您将 PPTX、PPT 和 ODP 文件转换为高质量的 JPEG 图像。本指南解释了不同的转换方法。

借助这些功能,您可以轻松实现自己的演示文稿查看器,并为每张幻灯片创建缩略图。如果您想保护幻灯片免于复制或以只读模式演示演示文稿,这可能会很有用。Aspose.Slides 允许您将整个演示文稿或特定幻灯片转换为图像格式。

将演示文稿幻灯片转换为 JPG 图像

以下是将 PPT、PPTX 或 ODP 文件转换为 JPG 的步骤:

  1. 创建 Presentation 类的实例。
  2. 从演示文稿的幻灯片集合中获取 ISlide 类型的幻灯片对象。
  3. 使用 ISlide.GetImage 方法为幻灯片创建图像。
  4. 在图像对象上调用 IImage.Save 方法。将输出文件名和图像格式作为参数传入。
float scaleX = 1.0f;
float scaleY = scaleX;

auto presentation = MakeObject<Presentation>(u"PowerPoint-Presentation.ppt");

for (auto&& slide : presentation->get_Slides())
{
    // 创建指定比例的幻灯片图像。
    auto image = slide->GetImage(scaleX, scaleY);

    // 将图像以 JPEG 格式保存到磁盘。
    auto fileName = String::Format(u"Slide_{0}.jpg", slide->get_SlideNumber());
    image->Save(fileName, ImageFormat::Jpeg);

    image->Dispose();
}

presentation->Dispose();

使用自定义尺寸将幻灯片转换为 JPG

要更改生成的 JPG 图像的尺寸,您可以将尺寸传递给 ISlide.GetImage(Size) 方法来设置图像大小。这使您能够生成具有特定宽度和高度值的图像,确保输出符合分辨率和宽高比的要求。当为 Web 应用、报告或文档生成图像,需要精确的图像尺寸时,这种灵活性尤为有用。

Size imageSize(1200, 800);

auto presentation = MakeObject<Presentation>(u"PowerPoint-Presentation.pptx");

for (auto&& slide : presentation->get_Slides())
{
    // 创建指定大小的幻灯片图像。
    auto image = slide->GetImage(imageSize);

    // 将图像以 JPEG 格式保存到磁盘。
    auto fileName = System::String::Format(u"Slide_{0}.jpg", slide->get_SlideNumber());
    image->Save(fileName, ImageFormat::Jpeg);

    image->Dispose();
}

presentation->Dispose();

在将幻灯片保存为图像时渲染注释

Aspose.Slides for C++ 提供了一项功能,允许在将演示文稿的幻灯片转换为 JPG 图像时渲染注释。此功能对于保留协作者在 PowerPoint 演示文稿中添加的批注、反馈或讨论特别有用。启用此选项后,注释将出现在生成的图像中,便于在无需打开原始演示文稿文件的情况下审阅和共享反馈。

假设我们有一个名为 “sample.pptx” 的演示稿文件,其中的某张幻灯片包含批注:

包含批注的幻灯片

以下 C++ 代码在保留批注的同时将幻灯片转换为 JPG 图像:

float scaleX = 2.0f;
float scaleY = scaleX;

auto presentation = MakeObject<Presentation>(u"sample.pptx");
{
    auto commentOptions = MakeObject<NotesCommentsLayoutingOptions>();
    commentOptions->set_CommentsPosition(CommentsPositions::Right);
    commentOptions->set_CommentsAreaWidth(200);
    commentOptions->set_CommentsAreaColor(Color::get_DarkOrange());

    // 设置幻灯片批注的选项。
    auto options = MakeObject<RenderingOptions>();
    options->set_SlidesLayoutOptions(commentOptions);

    // 将第一张幻灯片转换为图像。
    auto image = presentation->get_Slide(0)->GetImage(options, scaleX, scaleY);
        
    image->Save(u"Slide_1.jpg", ImageFormat::Jpeg);
    image->Dispose();
}

presentation->Dispose();

结果:

包含批注的 JPG 图像

另请参阅

查看将 PPT、PPTX 或 ODP 转换为图像的其他选项,例如:

免费在线 PPTX 转 JPG 转换器

常见问题

此方法是否支持批量转换?

是的,Aspose.Slides 支持在一次操作中批量将多个幻灯片转换为 JPG。

转换是否支持 SmartArt、图表和其他复杂对象?

是的,Aspose.Slides 能渲染所有内容,包括 SmartArt、图表、表格、形状等。不过,与 PowerPoint 相比,渲染精度可能会略有差异,特别是在使用自定义或缺失字体时。

处理的幻灯片数量是否有限制?

Aspose.Slides 本身对可处理的幻灯片数量没有严格限制。但在处理大型演示文稿或高分辨率图像时,可能会遇到内存不足错误。