Как сохранять презентации в .NET

Как сохранять презентации в .NET

Aspose.Slides FOSS for .NET сохраняет презентации исключительно в формат .pptx с использованием prs.Save(path, SaveFormat.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, не вызывает исключения — параметр формата тихо игнорируется, и файл всегда сохраняется как PPTX. Для нераспознанного значения формата нет NotSupportedException.


Часто задаваемые вопросы

Могу ли я сохранить в тот же файл, который открыл?

Да. Сохранение в тот же путь перезаписывает оригинальный файл:

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

Сохраняет ли сохранение содержимое, которое я не изменял?

Да. Неизвестные части XML из оригинального файла сохраняются дословно. Библиотека сериализует только те части модели документа, которые она понимает, и пропускает любой XML, который она не распознает.


См. также

 Русский