Сохранение презентаций в .NET
Обзор
Open Presentations in C# описывает, как использовать класс Presentation для открытия презентации. В этой статье объясняется, как создавать и сохранять презентации. Класс Presentation содержит содержимое презентации. Независимо от того, создаете ли вы презентацию с нуля или изменяете существующую, вам понадобится сохранить её после завершения. С Aspose.Slides для .NET вы можете сохранять в файл или поток. Эта статья объясняет различные способы сохранения презентации.
Сохранение презентаций в файлы
Сохраните презентацию в файл, вызвав метод Save класса Presentation. Передайте имя файла и формат сохранения в метод. В следующем примере показано, как сохранить презентацию с помощью Aspose.Slides.
// Создайте экземпляр класса Presentation, представляющего файл презентации.
using (Presentation presentation = new Presentation())
{
// Выполните здесь некоторые действия...
// Сохраните презентацию в файл.
presentation.Save("Output.pptx", SaveFormat.Pptx);
}
Сохранение презентаций в потоки
Вы можете сохранить презентацию в поток, передав поток вывода в метод Save класса Presentation. Презентацию можно записать в различные типы потоков. В примере ниже мы создаём новую презентацию и сохраняем её в файловый поток.
// Создайте экземпляр класса Presentation, представляющего файл презентации.
using (Presentation presentation = new Presentation())
{
using (FileStream fileStream = new FileStream("Output.pptx", FileMode.Create))
{
// Сохраните презентацию в поток.
presentation.Save(fileStream, SaveFormat.Pptx);
}
}
Сохранение презентаций с предопределённым типом представления
Aspose.Slides позволяет установить начальное представление, которое PowerPoint использует при открытии сгенерированной презентации, с помощью класса ViewProperties. Установите свойство LastView значением из перечисления ViewType.
using (Presentation presentation = new Presentation())
{
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
}
Сохранение презентаций в строгом формате Office Open XML
Aspose.Slides позволяет сохранять презентацию в строгом формате Office Open XML. Используйте класс PptxOptions и задайте его свойство conformance при сохранении. Если установить Conformance.Iso29500_2008_Strict, выходной файл будет сохранён в строгом формате Office Open XML.
В примере ниже создаётся презентация и сохраняется в строгом формате Office Open XML.
PptxOptions options = new PptxOptions()
{
Conformance = Conformance.Iso29500_2008_Strict
};
// Создайте экземпляр класса Presentation, представляющего файл презентации.
using (Presentation presentation = new Presentation())
{
// Сохраните презентацию в строгом формате Office Open XML.
presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
}
Сохранение презентаций в формате Office Open XML в режиме Zip64
Файл Office Open XML представляет собой ZIP‑архив, который налагает ограничения в 4 ГБ (2^32 байт) на несжатый размер любого файла, сжатый размер любого файла и общий размер архива, а также ограничивает количество файлов в архиве 65 535 (2^16‑1). Расширения формата ZIP64 повышают эти ограничения до 2^64.
Свойство IPptxOptions.Zip64Mode позволяет выбрать, когда использовать расширения формата ZIP64 при сохранении файла Office Open XML.
Это свойство предоставляет следующие режимы:
IfNecessaryиспользует расширения формата ZIP64 только если презентация превышает вышеуказанные ограничения. Это режим по умолчанию.Neverникогда не использует расширения формата ZIP64.Alwaysвсегда использует расширения формата ZIP64.
В следующем коде демонстрируется, как сохранить презентацию как PPTX с включёнными расширениями формата ZIP64:
using (Presentation presentation = new Presentation("Sample.pptx"))
{
presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, new PptxOptions()
{
Zip64Mode = Zip64Mode.Always
});
}
ПРИМЕЧАНИЕ
При сохранении сZip64Mode.Never будет выброшено исключение PptxException, если презентацию нельзя сохранить в формате ZIP32.
Сохранение презентаций без обновления миниатюры
Свойство PptxOptions.RefreshThumbnail управляет генерацией миниатюры при сохранении презентации в PPTX:
- Если установлено
true, миниатюра обновляется во время сохранения. Это значение по умолчанию. - Если установлено
false, текущая миниатюра сохраняется. Если у презентации нет миниатюры, она не будет создана.
В коде ниже презентация сохраняется в PPTX без обновления её миниатюры.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
presentation.Save("Output.pptx", SaveFormat.Pptx, new PptxOptions()
{
RefreshThumbnail = false
});
}
Информация
Эта опция помогает сократить время, необходимое для сохранения презентации в формате PPTX.Обновления прогресса сохранения в процентах
Интерфейс IProgressCallback используется через свойство ProgressCallback, предоставляемое интерфейсом ISaveOptions и абстрактным классом SaveOptions. Присвойте реализации IProgressCallback свойству ProgressCallback, чтобы получать обновления о прогрессе сохранения в процентах.
Следующие фрагменты кода показывают, как использовать IProgressCallback.
ISaveOptions saveOptions = new PdfOptions();
saveOptions.ProgressCallback = new ExportProgressHandler();
using (Presentation presentation = new Presentation("Sample.pptx"))
{
presentation.Save("Output.pdf", SaveFormat.Pdf, saveOptions);
}
class ExportProgressHandler : IProgressCallback
{
public void Reporting(double progressValue)
{
// Используйте здесь значение процента прогресса.
int progress = Convert.ToInt32(progressValue);
Console.WriteLine(progress + "% of the file has been converted.");
}
}
Информация
Aspose разработала бесплатное приложение PowerPoint Splitter, использующее её собственный API. Приложение позволяет разбивать презентацию на несколько файлов, сохраняя выбранные слайды как новые файлы PPTX или PPT.FAQ
Поддерживается ли «быстрое сохранение» (инкрементное сохранение), при котором записываются только изменения?
Нет. При сохранении каждый раз создаётся полный целевой файл; инкрементное «быстрое сохранение» не поддерживается.
Безопасно ли сохранять один и тот же объект Presentation из нескольких потоков?
Нет. Экземпляр Presentation не является потокобезопасным; сохраняйте его из одного потока.
Что происходит с гиперссылками и внешними связанными файлами при сохранении?
Гиперссылки сохраняются. Внешние связанные файлы (например, видео по относительным путям) не копируются автоматически — убедитесь, что указанные пути остаются доступными.
Можно ли задать/сохранить метаданные документа (Автор, Заголовок, Компания, Дата)?
Да. Поддерживаются стандартные свойства документа и они будут записаны в файл при сохранении.