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