跳至页脚内容
PPT 工具

如何使用 C# 将 PowerPoint 转换为图像

在软件开发领域,经常需要将PowerPoint演示文稿转换为图片格式。 许多开发人员发现,能够以编程方式将 PowerPoint 文件转换为照片非常有用,无论是用于生成预览、创建缩略图还是系统集成。 本文将解释如何使用 C# 将 ppt 转换为图像,并提供一些示例代码来帮助您完成操作。

如何使用 C# 将 PowerPoint 转换为图像

  1. 创建 PowerPoint 应用程序实例。
  2. 使用实例打开演示文稿。
  3. 检查并创建输出文件夹。
  4. 遍历幻灯片并将幻灯片导出为图像。
  5. 关闭演示文稿并退出应用程序。

将 PowerPoint 演示文稿转换为图像格式?

在深入探讨具体细节之前,让我们先快速了解一下将 PowerPoint 幻灯片转换为照片的意义。 尽管 PowerPoint 是制作动态演示文稿的绝佳工具,但以原始格式共享这些文件并不总是可行的。 有时只需要从演示文稿中截取特定的幻灯片或照片,而有时,不同的系统和设置可能无法直接渲染 PowerPoint 文件。 将 PowerPoint 演示文稿转换为图片,即可提供一种全面的解决方案,方便在各种设备和应用程序上共享和查看。

使用 PowerPoint 互操作库

在 C# 中,有几种方法可以将 PowerPoint 演示文稿转换为照片。 使用[Microsoft.Office.Interop.PowerPoint](https://learn.microsoft.com/en-us/previous-versions/office/office-12/ff761925(v=office.12)命名空间(它提供了用于以编程方式与 PowerPoint 应用程序交互的类和方法)是一种流行的方法。 这为处理 PowerPoint 文件提供了强大的功能。

创建新的Visual Studio项目

请按照以下步骤创建一个新的 Visual Studio 项目:

打开 Visual Studio IDE。请确保在使用前已在您的电脑上安装了Visual Studio

启动新项目:

选择File,然后选择New,最后选择Project。

如何使用 C# 将 PowerPoint 转换为图像:图 1 - 打开 Visual Studio 并选择文件 - 新建 - 项目。

在"创建新项目"框中,从左侧选择您喜欢的编程语言(例如 C#)。

接下来,从可用项目模板列表中选择"控制台应用程序"或"控制台应用程序 (.NET Core)"模板。

请填写"名称"部分以命名您的项目。

如何使用 C# 将 PowerPoint 转换为图像:图 2 - 从"创建新项目"框中,选择 C# 编程语言和控制台应用程序。配置项目名称和位置,然后单击"下一步"按钮。

选择项目的存储位置。

点击"创建"开始创建新的控制台应用程序项目。

如何使用 C# 将 PowerPoint 转换为图像:图 3 - 选择合适的 .NET Framework,然后单击"创建"按钮。

使用 C# 将 PowerPoint 幻灯片转换为图像

我们先来看看如何使用 Microsoft.Office.Interop.PowerPoint 命名空间将 PowerPoint 幻灯片转换为图片。 请先确保所需的程序集已安装并添加到您的 C# 项目中作为引用。这些程序集通常可以通过直接引用 InterOp 程序集或安装 Microsoft Office 主互操作程序集 (PIA) 来找到。

代码示例

using System.IO; // Import System.IO namespace for file handling
using Microsoft.Office.Interop.PowerPoint; // Import Interop PowerPoint namespace

class Program
{
    static void Main(string[] args)
    {
        string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
        string outputFolder = "output_images"; // Output folder path where images will be saved

        ConvertPptToImages(pptFilePath, outputFolder); // Convert PowerPoint slides to images
    }

    static void ConvertPptToImages(string pptFilePath, string outputFolder)
    {
        Application pptApplication = new Application(); // Create a new PowerPoint application instance
        Presentation pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); // Open the PowerPoint presentation

        if (!Directory.Exists(outputFolder)) // Check if the output folder exists
            Directory.CreateDirectory(outputFolder); // Create the output folder if it doesn't exist

        int slidesCount = pptPresentation.Slides.Count; // Get the number of slides in the presentation

        for (int i = 1; i <= slidesCount; i++) // Iterate through all slides
        {
            string outputPath = Path.Combine(outputFolder, $"Slide{i}.png"); // Set the output path for the current slide
            pptPresentation.Slides[i].Export(outputPath, "png", 1024, 768); // Export slide to PNG format
        }

        pptPresentation.Close(); // Close the PowerPoint presentation
        pptApplication.Quit(); // Quit the PowerPoint application
    }
}
using System.IO; // Import System.IO namespace for file handling
using Microsoft.Office.Interop.PowerPoint; // Import Interop PowerPoint namespace

class Program
{
    static void Main(string[] args)
    {
        string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
        string outputFolder = "output_images"; // Output folder path where images will be saved

        ConvertPptToImages(pptFilePath, outputFolder); // Convert PowerPoint slides to images
    }

    static void ConvertPptToImages(string pptFilePath, string outputFolder)
    {
        Application pptApplication = new Application(); // Create a new PowerPoint application instance
        Presentation pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); // Open the PowerPoint presentation

        if (!Directory.Exists(outputFolder)) // Check if the output folder exists
            Directory.CreateDirectory(outputFolder); // Create the output folder if it doesn't exist

        int slidesCount = pptPresentation.Slides.Count; // Get the number of slides in the presentation

        for (int i = 1; i <= slidesCount; i++) // Iterate through all slides
        {
            string outputPath = Path.Combine(outputFolder, $"Slide{i}.png"); // Set the output path for the current slide
            pptPresentation.Slides[i].Export(outputPath, "png", 1024, 768); // Export slide to PNG format
        }

        pptPresentation.Close(); // Close the PowerPoint presentation
        pptApplication.Quit(); // Quit the PowerPoint application
    }
}
Imports System.IO ' Import System.IO namespace for file handling
Imports Microsoft.Office.Interop.PowerPoint ' Import Interop PowerPoint namespace

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pptFilePath As String = "demo.pptx" ' Path to your PowerPoint file
		Dim outputFolder As String = "output_images" ' Output folder path where images will be saved

		ConvertPptToImages(pptFilePath, outputFolder) ' Convert PowerPoint slides to images
	End Sub

	Private Shared Sub ConvertPptToImages(ByVal pptFilePath As String, ByVal outputFolder As String)
		Dim pptApplication As New Application() ' Create a new PowerPoint application instance
		Dim pptPresentation As Presentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse) ' Open the PowerPoint presentation

		If Not Directory.Exists(outputFolder) Then ' Check if the output folder exists
			Directory.CreateDirectory(outputFolder) ' Create the output folder if it doesn't exist
		End If

		Dim slidesCount As Integer = pptPresentation.Slides.Count ' Get the number of slides in the presentation

		For i As Integer = 1 To slidesCount ' Iterate through all slides
			Dim outputPath As String = Path.Combine(outputFolder, $"Slide{i}.png") ' Set the output path for the current slide
			pptPresentation.Slides(i).Export(outputPath, "png", 1024, 768) ' Export slide to PNG format
		Next i

		pptPresentation.Close() ' Close the PowerPoint presentation
		pptApplication.Quit() ' Quit the PowerPoint application
	End Sub
End Class
$vbLabelText   $csharpLabel

使用Microsoft.Office.Interop.PowerPoint;声明导入与 PowerPoint 应用程序交互所需的 C# 命名空间。 该程序的入口点是Main方法。 它指定输出文件夹( outputFolder ),即保存创建的照片的位置,以及 PowerPoint 文件的路径( pptFilePath )。 此方法负责将 PowerPoint 演示文稿实际转换为照片。

PowerPoint演示文稿文件

如何使用 C# 将 PowerPoint 转换为图像:图 4 - 用于代码示例的 PowerPoint ppt。

Application pptApplication = new Application();用于启动 PowerPoint 程序的新实例。 这使得可以通过程序与 PowerPoint 进行交互。 使用pptApplication.Presentations ,我们打开由pptFilePath.Open()函数指定的 PowerPoint 演示文稿文件。 此函数返回一个 Presentation 对象,该对象表示已打开的演示文稿。 我们确定输出文件夹" outputFolder "是否存在。 如果不存在,我们使用Directory.CreateDirectory()方法创建它。

控制台输出

如何使用 C# 将 PowerPoint 转换为图像:图 5 - 控制台输出。

我们使用 for 循环遍历演示文稿中的每一张幻灯片。 pptPresentation使用属性Slides.Count提供幻灯片总数。 我们使用输出文件夹路径和幻灯片索引来创建每个幻灯片图片的输出路径(例如Slide{i}.png )。 接下来,我们使用pptPresentation Export()函数将 PowerPoint 幻灯片导出为图片(在本例中为 PNG 图像格式)。 参数为图片格式("png"格式)和尺寸(宽度:1024,高度:768)。 最后,我们使用pptPresentation.Close()结束演示文稿,使用pptApplication.Quit()结束 PowerPoint 会话。 要适当地释放系统资源,请使用Quit()

输出 - 将 PowerPoint 文件转换为 PNG 图像

如何使用C#将PowerPoint转换为图像:图6 - 导出的PowerPoint幻灯片转为PNG图像输出。

IronPPT

IronPPT 是 Iron Software 开发的专用 .NET 库,用于使用 C# 或 VB.NET 处理 PowerPoint (PPT/PPTX) 文件,而无需Microsoft Office 或 Office Interop 组件。

主要功能

*无需 Office 即可处理 PowerPoint* :在任何 .NET 平台(Windows、macOS、Linux、Docker 或 Azure)上加载、编辑或创建.pptx (和.ppt )文件,无需安装 PowerPoint。 幻灯片类型和布局控制,包括大小、方向、背景和母版布局。 丰富的内容支持:添加和设置文本样式(字体、大小、颜色、对齐方式)、绘制形状、插入图像以及配置图表或表格——所有这些都可通过流畅的 API 实现。 高保真图像导出**:可以使用Save()Export()方法将每个Slide保存为自定义分辨率的 PNG 或 JPEG 格式(例如presentation.Save(&quot;Slide1.png&quot;, width:1200, height:800) )。

  • 支持多个 .NET 版本:Azure 或容器环境中的 .NET Framework 4.6.2+、.NET Core 3.1、.NET 5–9 和 .NET 6/7/8。 *服务器安全且线程友好:非常适合后台服务、Web API 或 CI/CD 工作负载。

安装 IronPPT

使用以下任一方法将 NuGet 包添加到您的项目中:

Install-Package IronPPT

或者通过 Visual Studio 的 NuGet 包管理器 GUI(搜索"IronPPT")。 安装完成后,通过添加以下内容导入:

using IronPPT;
using IronPPT;
Imports IronPPT
$vbLabelText   $csharpLabel

要解锁全部功能,请设置您的许可证密钥或使用免费的 30 天试用密钥:

IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY";
IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY";
IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY"
$vbLabelText   $csharpLabel

使用 IronPPT 将 PowerPoint 幻灯片转换为图像

使用 IronPPT,将幻灯片转换为图像既简单又方便。以下是一个地道的 C# 示例,展示了具体操作方法:

using IronPPT;
using System.IO;

// Optional: apply the license key
// IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY";

var presentation = PresentationDocument.Load("input.pptx");

if (!Directory.Exists("images"))
    Directory.CreateDirectory("images");

for (int i = 0; i < presentation.Slides.Count; i++)
{
    var slide = presentation.Slides[i];
    string filePath = Path.Combine("images", $"slide{i+1}.png");
    slide.SaveAsImage(filePath, width: 1024, height: 768);
}

presentation.Close();
using IronPPT;
using System.IO;

// Optional: apply the license key
// IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY";

var presentation = PresentationDocument.Load("input.pptx");

if (!Directory.Exists("images"))
    Directory.CreateDirectory("images");

for (int i = 0; i < presentation.Slides.Count; i++)
{
    var slide = presentation.Slides[i];
    string filePath = Path.Combine("images", $"slide{i+1}.png");
    slide.SaveAsImage(filePath, width: 1024, height: 768);
}

presentation.Close();
Imports IronPPT
Imports System.IO

' Optional: apply the license key
' IronPPT.License.LicenseKey = "YOUR_LICENSE_KEY";

Private presentation = PresentationDocument.Load("input.pptx")

If Not Directory.Exists("images") Then
	Directory.CreateDirectory("images")
End If

For i As Integer = 0 To presentation.Slides.Count - 1
	Dim slide = presentation.Slides(i)
	Dim filePath As String = Path.Combine("images", $"slide{i+1}.png")
	slide.SaveAsImage(filePath, width:= 1024, height:= 768)
Next i

presentation.Close()
$vbLabelText   $csharpLabel

这种方法完全避免了COM问题。 IronPPT 在内部处理分页、矢量缩放和图像渲染,因此您的图像与 PowerPoint 的外观和感觉相匹配。

对于更高级的用法,您可以控制幻灯片顺序、重用模板、添加表格或图表,或插入自定义 SVG/矢量图像(有关完整的类和方法细分,请参阅详细的 API 参考)。

结论

在许多现代 .NET 应用程序中,将 PowerPoint 演示文稿转换为图像是必不可少的——用于文档预览、自动报告或下游处理。 您可以使用 Microsoft Office Interop 组件来完成此任务,但这会带来许多限制——Office 安装、稳定性问题、许可问题和平台限制。

IronPPT 提供了一个功能齐全、高性能且跨平台的 API,用于将 .pptx 文件转换为图像——从单张幻灯片到整个演示文稿均可转换。无论您是在桌面客户端、Web API 还是无头服务器环境中操作,IronPPT 都能提供相同的保真度和控制力,而无需 Office。将上述基于 Interop 的代码替换为 IronPPT,即可开始更快、更可靠地生成 PowerPoint 预览,并获得完整的 .NET 控制。

访问 IronPPT API 参考或查看详细的代码示例(包括其llms.txt索引)以探索更多功能。 提供免费试用版——立即试用,将 PowerPoint 转图像功能添加到您的 .NET 工具包中!

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。