在 C# 中打开演示文稿

除了从头创建 PowerPoint 演示文稿,Aspose.Slides 还允许您打开现有演示文稿。在您加载演示文稿后,可以获取有关演示文稿的信息,编辑演示文稿(幻灯片上的内容),添加新幻灯片或删除现有幻灯片等。

打开演示文稿

要打开现有演示文稿,您只需实例化 Presentation 类,并将文件路径(要打开的演示文稿的路径)传递给它的构造函数。

以下 C# 代码演示如何打开演示文稿,并找出其包含的幻灯片数量:

// 实例化 Presentation 类,并将文件路径传递给其构造函数
Presentation pres = new Presentation("OpenPresentation.pptx");

// 打印演示文稿中存在的幻灯片总数
System.Console.WriteLine(pres.Slides.Count.ToString());

打开受密码保护的演示文稿

当您需要打开受密码保护的演示文稿时,可以通过 Password 属性(来自 LoadOptions 类)传递密码,以解密并加载演示文稿。以下 C# 代码演示该操作:

	LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
	using (Presentation presentation = new Presentation("pres.pptx", loadOptions))
	{
	  // 对解密后的演示文稿进行一些操作
	}

打开大型演示文稿

Aspose.Slides 提供选项(尤其是 BlobManagementOptions 属性)来允许您加载大型演示文稿。

以下 C# 演示了一项操作,其中加载一个大型演示文稿(例如 2GB 大小):

const string pathToVeryLargePresentationFile = "veryLargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = {
        // 选择 KeepLocked 行为 - "veryLargePresentation.pptx" 将在
        // 演示文稿的实例生命周期内保持锁定,但我们不需要将其加载到内存中或复制到
        // 临时文件
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
    }
};

using (Presentation pres = new Presentation(pathToVeryLargePresentationFile, loadOptions))
{
    // 大型演示文稿已被加载并可以使用,但内存消耗仍然较低。

    // 对演示文稿进行更改。
    pres.Slides[0].Name = "非常大的演示文稿";

    // 演示文稿将保存到另一个文件。操作期间内存消耗保持较低
    pres.Save("veryLargePresentation-copy.pptx", SaveFormat.Pptx);

    // 不能这样做!将抛出 IO 异常,因为文件在 pres 对象未被
    // 释放时被锁定
    File.Delete(pathToVeryLargePresentationFile);
}

// 此时可以这样做,源文件未被 pres 对象锁定
File.Delete(pathToVeryLargePresentationFile);

加载演示文稿

Aspose.Slides 提供 IResourceLoadingCallback 及其单个方法,以允许您管理外部资源。以下 C# 代码演示如何使用 IResourceLoadingCallback 接口:

LoadOptions opts = new LoadOptions();
opts.ResourceLoadingCallback = new ImageLoadingHandler();
Presentation presentation = new Presentation("presentation.pptx", opts);
public class ImageLoadingHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
    {
        if (args.OriginalUri.EndsWith(".jpg"))
        {
            try // 加载替代图像
            {
                byte[] imageBytes = File.ReadAllBytes("c:\\aspose-logo.jpg");
                args.SetData(imageBytes);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // 设置替代网址
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // 跳过所有其他图像
        return ResourceLoadingAction.Skip;
    }
}

加载不包含嵌入二进制对象的演示文稿

PowerPoint 演示文稿可以包含以下类型的嵌入二进制对象:

通过 ILoadOptions.DeleteEmbeddedBinaryObjects 属性,您可以加载不包含任何嵌入二进制对象的演示文稿。

该属性对于删除潜在的恶意二进制内容非常有用。

以下 C# 代码演示如何加载和保存没有恶意内容的演示文稿:

LoadOptions loadOptions = new LoadOptions()
{
	DeleteEmbeddedBinaryObjects = true
}

using (var pres = new Presentation("malware.ppt", loadOptions))
{
    pres.Save("clean.ppt", SaveFormat.Ppt);
}

打开和保存演示文稿

步骤:在 C# 中打开和保存演示文稿

  1. 创建 Presentation 类的实例,并传递您想要打开的文件。
  2. 保存演示文稿。
// 加载任何支持的演示文稿,例如 ppt、pptx、odp
Presentation presentation = new Presentation("Sample.odp");

presentation.Save("OutputPresenation.pptx", SaveFormat.Pptx);