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

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

Aspose.Slides FOSS for .NET saves presentations exclusively to .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");

Поддерживаемый формат сохранения

ФорматЗначение EnumПоддерживается
PPTX (Office Open XML)SaveFormat.PptxДа
PDFN/AНет
HTMLN/AНет
SVGN/AНет
PNG / JPEGN/AНет
ODP (OpenDocument)N/AНет

Поддерживается только PPTX. Параметр формата в настоящее время игнорируется; все презентации сохраняются как 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‑данные пропускает без изменений.


См. также

 Русский