Как сохранять презентации в .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 | Да |
| N/A | Нет | |
| HTML | N/A | Нет |
| SVG | N/A | Нет |
| PNG / JPEG | N/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, который она не распознает.