Сохранение презентаций в .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
});
}
NOTE
При сохранении сZip64Mode.Never будет выброшено исключение PptxException, если презентацию нельзя сохранить в формате ZIP32.
Сохранение презентаций в формате Office Open XML с уровнями сжатия
При работе с крупными презентациями вы можете регулировать уровень сжатия, чтобы сбалансировать размер файла и время обработки. В зависимости от ваших требований вы можете предпочесть более быструю обработку или более мелкие файлы.
Aspose.Slides предоставляет свойство IPptxOptions.CompressionLevel, позволяющее указать уровень сжатия, используемый при сохранении презентации в формате Office Open XML.
Доступные уровни сжатия:
- None: Сжатие не применяется. Файлы сохраняются как есть.
- Level1: Самое быстрое сжатие с наименьшим коэффициентом сжатия.
- Level2: Сжатие быстрее, с немного лучшим коэффициентом, чем Level1.
- Level3: Обеспечивает лучшее сжатие, чем Level2, с умеренным влиянием на время обработки.
- Level4: Лучше сжимает, чем Level3.
- Level5: Улучшенное сжатие по сравнению с Level4, но требует дополнительного времени обработки.
- Level6: Стандартное сжатие, обеспечивающее хороший баланс между скоростью обработки и размером файла. Это уровень сжатия по умолчанию.
- Level7: Лучше сжимает, чем Level6, но процесс медленнее.
- Level8: Лучше сжимает, чем Level7.
- Level9: Максимальное сжатие. Дает наименьший размер файла, но требует наибольшего времени обработки.
Следующий пример демонстрирует, как сохранить презентацию в файл PPTX без сжатия:
using (Presentation pres = new Presentation("Sample.pptx"))
{
pres.Save("Sample-out.pptx", SaveFormat.Pptx, new PptxOptions
{
CompressionLevel = CompressionLevel.None
});
}
Этот пример показывает, как сохранить презентацию в файл PPTX с максимальным сжатием:
using (Presentation pres = new Presentation("Sample.pptx"))
{
pres.Save("Sample-level9.pptx", SaveFormat.Pptx, new PptxOptions
{
CompressionLevel = CompressionLevel.Level9
});
}
Сохранение презентаций без обновления миниатюры
Свойство PptxOptions.RefreshThumbnail управляет генерацией миниатюры при сохранении презентации в формате PPTX:
- Если установить
true, миниатюра обновляется во время сохранения. Это значение по умолчанию. - Если установить
false, сохраняется текущая миниатюра. Если у презентации нет миниатюры, она не будет создана.
В коде ниже презентация сохраняется в PPTX без обновления её миниатюры.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
presentation.Save("Output.pptx", SaveFormat.Pptx, new PptxOptions()
{
RefreshThumbnail = false
});
}
Info
Эта опция помогает сократить время, необходимое для сохранения презентации в формате 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.");
}
}
Info
Aspose разработала бесплатное приложение PowerPoint Splitter, использующее собственный API. Приложение позволяет разбивать презентацию на несколько файлов, сохраняя выбранные слайды как новые файлы PPTX или PPT.Вопросы и ответы
Поддерживается ли «быстрое сохранение» (инкрементальное сохранение), при котором записываются только изменения?
Нет. При сохранении каждый раз создаётся полный целевой файл; инкрементное «быстрое сохранение» не поддерживается.
Является ли сохранение одного и того же экземпляра Presentation из нескольких потоков потокобезопасным?
Нет. Экземпляр Presentation не является потокобезопасным; сохраняйте его из одного потока.
Что происходит с гиперссылками и внешними связанными файлами при сохранении?
Hyperlinks сохраняются. Внешние связанные файлы (например, видео по относительным путям) не копируются автоматически — убедитесь, что указанные пути остаются доступными.
Можно ли задать/сохранить метаданные документа (Автор, Заголовок, Компания, Дата)?
Да. Стандартные document properties поддерживаются и будут записаны в файл при сохранении.