Сохранение презентаций в .NET
Обзор
Open Presentations in C# описывает, как использовать класс Presentation для открытия презентации. Эта статья объясняет, как создавать и сохранять презентации. Класс Presentation содержит содержимое презентации. Независимо от того, создаёте ли вы презентацию с нуля или изменяете существующую, по завершении её нужно сохранить. С Aspose.Slides для .NET вы можете сохранять в файл или поток. Эта статья объясняет различные способы сохранения презентации.
Сохранение презентаций в файлы
Сохраните презентацию в файл, вызвав метод Save класса Presentation. Передайте имени файла и формат сохранения в метод. Ниже приведён пример, показывающий, как сохранить презентацию с помощью Aspose.Slides.
using Aspose.Slides;
using Aspose.Slides.Export;
// Создайте экземпляр класса Presentation, представляющего файл презентации.
using (Presentation presentation = new Presentation())
{
// Выполните некоторую работу здесь...
// Сохраните презентацию в файл.
presentation.Save("Output.pptx", SaveFormat.Pptx);
}
Сохранение презентаций в потоки
Вы можете сохранить презентацию в поток, передав выходной поток методу Save класса Presentation. Презентацию можно записать в различные типы потоков. В примере ниже мы создаём новую презентацию и сохраняем её в файловый поток.
using Aspose.Slides;
using Aspose.Slides.Export;
// Создайте экземпляр класса 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 Aspose.Slides;
using Aspose.Slides.Export;
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.
using Aspose.Slides;
using Aspose.Slides.Export;
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 Aspose.Slides;
using Aspose.Slides.Export;
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 Aspose.Slides;
using Aspose.Slides.Export;
using (Presentation pres = new Presentation("Sample.pptx"))
{
pres.Save("Sample-out.pptx", SaveFormat.Pptx, new PptxOptions
{
CompressionLevel = CompressionLevel.None
});
}
Этот пример демонстрирует, как сохранить презентацию в файл PPTX с максимальным сжатием:
using Aspose.Slides;
using Aspose.Slides.Export;
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 Aspose.Slides;
using Aspose.Slides.Export;
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.
using Aspose.Slides;
using Aspose.Slides.Export;
ISaveOptions saveOptions = new PdfOptions();
saveOptions.ProgressCallback = new ExportProgressHandler();
using (Presentation presentation = new Presentation("Sample.pptx"))
{
presentation.Save("Output.pdf", SaveFormat.Pdf, saveOptions);
}
using Aspose.Slides;
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 поддерживаются и будут записаны в файл при сохранении.