如何在 .NET 中保存演示文稿

如何在 .NET 中保存演示文稿

Aspose.Slides FOSS for .NET 使用 prs.Save(path, SaveFormat.Pptx) 将演示文稿专门保存为 .pptx 格式。本指南涵盖正确的保存模式、保存到不同路径、保存到流以及常见的保存相关错误。

分步指南

步骤 1:安装软件包

dotnet add package Aspose.Slides.Foss

步骤 2:打开或创建演示文稿

始终使用 using 语句。保存调用必须在对象被释放之前发生。

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

// Create new
using var prs = new Presentation();
prs.Save("new.pptx", SaveFormat.Pptx);
// Open existing
using var prs = new Presentation("input.pptx");
prs.Save("output.pptx", SaveFormat.Pptx);

步骤 3:在所有修改后保存

在所有修改完成后放置 Save() 调用,在 using 范围结束之前。

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 300, 100);
shape.AddTextFrame("Hello, World!");
prs.Save("output.pptx", SaveFormat.Pptx);

步骤 4:保存到不同的路径

传递不同的输出路径以创建新文件,而不修改原始文件:

using var prs = new Presentation("template.pptx");
// modify ...
prs.Save("customized.pptx", SaveFormat.Pptx);

template.pptx 文件未被修改;customized.pptx 被创建(如果已存在则会被覆盖)。


步骤 5:保存到流

Presentation.Save 方法还接受一个 Stream

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
using var stream = new MemoryStream();
prs.Save(stream, SaveFormat.Pptx);
byte[] pptxBytes = stream.ToArray();
Console.WriteLine($"Size: {pptxBytes.Length} bytes");

步骤 6:验证输出

保存到文件后,检查它是否存在:

var info = new FileInfo("output.pptx");
Console.WriteLine($"Saved: {info.Exists}, size: {info.Length} bytes");

支持的保存格式

格式枚举值支持
PPTX (Office Open XML)SaveFormat.Pptx
PDFN/A
HTMLN/A
SVGN/A
PNG / JPEGN/A
ODP (OpenDocument)N/A

仅支持 PPTX。当前忽略 format 参数;所有演示文稿均保存为 PPTX,无论指定的 SaveFormat 为何。


常见问题及解决方案

IOException: The process cannot access the file

输出文件已在其他应用程序中打开(例如,PowerPoint 已打开该文件)。在保存之前,请先关闭其他应用程序中的文件。

文件已创建但显示为空或已损坏

确保在对象被释放之前调用 prs.Save()。在 Dispose() 运行后,后续调用将失败或产生损坏的输出。

保存时出现意外的输出格式

传递任何 SaveFormat 值(除 SaveFormat.Pptx 之外)不会抛出异常——format 参数会被静默忽略,文件始终以 PPTX 保存。对于未识别的格式值,没有 NotSupportedException


常见问题

我可以保存到我打开的同一个文件吗?

是的。保存到相同路径会覆盖原始文件:

using var prs = new Presentation("deck.pptx");
// modify ...
prs.Save("deck.pptx", SaveFormat.Pptx);  // overwrites original

保存是否会保留我未修改的内容?

是的。原始文件中的未知 XML 部分会原样保留。该库仅序列化其能够理解的文档模型部分,并会直接传递任何它不识别的 XML。


另请参阅

 中文