Сохранение презентаций в .NET
Обзор
После того как вы создадите презентацию или откроете существующую, используйте метод Presentation.Save для записи результата. Aspose.Slides для .NET может сохранять презентацию в файл или поток в форматах PowerPoint, OpenDocument, PDF и других. В следующих разделах рассматриваются стандартные операции сохранения и доступные параметры вывода PPTX.
Сохранение презентаций в файлы
Чтобы сохранить презентацию в файл, передайте путь вывода и значение SaveFormat методу Presentation.Save. Значение формата определяет тип файла, который создает Aspose.Slides.
В следующем примере создается презентация и сохраняется в файл PPTX:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// Add or modify presentation content here.
presentation.Save("Output.pptx", SaveFormat.Pptx);
Сохранение презентаций в их исходном формате
Для примеров обнаружения файлов и потоков, поведения только что созданных презентаций и различий между исходным и выходным форматами см. Определение исходного формата презентации.
В приложении пакетной обработки входной формат может быть неизвестен заранее. После загрузки файла прочитайте его исходный формат из свойства IPresentation.SourceFormat. Передайте полученное значение SourceFormat методу SlideUtil.ToSaveFormat для получения соответствующего значения SaveFormat, а затем используйте Presentation.Save для записи изменённой презентации.
В следующем полном примере обрабатывается каждый файл во входном каталоге, обновляется его заголовок и сохраняется в выходном каталоге в том же формате, из которого был загружен:
using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;
var inputDirectory = "Input";
var outputDirectory = "Output";
Directory.CreateDirectory(outputDirectory);
foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
try
{
using var presentation = new Presentation(inputPath);
var sourceFormat = presentation.SourceFormat;
var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);
presentation.DocumentProperties.Title = "Processed by the batch application";
var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
presentation.Save(outputPath, saveFormat);
}
catch (ArgumentException exception)
{
Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
}
catch (Exception exception)
{
Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
}
}
SlideUtil.ToSaveFormat сопоставляет PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP и PowerPoint XML их соответствующим форматам сохранения презентаций. Он сопоставляет только форматы источника презентаций; не предназначен для выбора форматов экспорта, таких как PDF, HTML, TIFF или изображения. Передача неподдерживаемого или недопустимого значения SourceFormat приводит к возникновению ArgumentException.
Унаследованные файлы PPT, PPS и POT используют один и тот же бинарный контейнер. Когда такая презентация загружается из потока без расширения файла, файл PPS или POT может быть определён как PPT. Если необходимо сохранять эти наследованные подтипы, сохраняйте оригинальное имя файла или метаданные формата отдельно и используйте их при выборе имени выходного файла и формата.
Сохранение презентаций в потоки
Чтобы записать презентацию без указания конечного пути к файлу, передайте записываемый Stream и значение SaveFormat методу Presentation.Save. Такой подход полезен, когда вывод должен быть возвращён из веб‑сервиса, сохранён в базе данных или обработан в памяти.
В следующем примере новая презентация сохраняется в файловый поток:
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);
presentation.Save(outputStream, SaveFormat.Pptx);
Сохранение презентаций с предопределённым типом представления
Вы можете указать представление, в котором PowerPoint изначально открывает сохранённую презентацию. Установите свойство ViewProperties.LastView в значение ViewType перед сохранением.
В следующем примере конфигурируется представление Slide Master как начальное представление:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
Сохранение презентаций в строгом формате Office Open XML
Чтобы создать файл PPTX, соответствующий строгому профилю Office Open XML, создайте экземпляр PptxOptions и установите его свойство Conformance в Conformance.Iso29500_2008_Strict. Затем передайте параметры методу Presentation.Save.
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PptxOptions
{
Conformance = Conformance.Iso29500_2008_Strict
};
using var presentation = new Presentation();
presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
Сохранение презентаций в формате Office Open XML в режиме Zip64
Стандартный ZIP‑архив ограничивает сжатый и несжатый размер каждой записи, общий размер архива и количество записей. Поскольку файл PPTX является ZIP‑архивом, очень большая презентация может превысить эти ограничения. Расширения ZIP64 повышают соответствующие ограничения по размеру и количеству записей.
Используйте свойство PptxOptions.Zip64Mode для управления тем, будет ли Aspose.Slides записывать расширения ZIP64:
IfNecessaryиспользует ZIP64 только когда презентация превышает стандартные ограничения ZIP. Это режим по умолчанию.Neverотключает расширения ZIP64.Alwaysвсегда записывает расширения ZIP64.
В следующем примере расширения ZIP64 всегда включаются для выводимой презентации:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
Zip64Mode = Zip64Mode.Always
};
presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);
Warning
ЕслиZip64Mode установлен в Never и презентация не помещается в стандартные ограничения ZIP, операция сохранения бросает PptxException.
Сохранение презентаций в формате Office Open XML с уровнями сжатия
Для вывода PPTX вы можете сбалансировать скорость сохранения и размер файла, установив свойство PptxOptions.CompressionLevel. Перечисление CompressionLevel предоставляет следующие значения:
Noneсохраняет данные без сжатия.Level1обеспечивает самое быстрое сжатие и самый большой сжатый результат.Level2‑Level5постепенно отдают предпочтение меньшему размеру вывода в ущерб скорости сохранения.Level6балансирует скорость сохранения и размер файла. Это уровень по умолчанию.Level7иLevel8ещё больше отдают предпочтение меньшему размеру вывода в ущерб скорости сохранения.Level9обеспечивает самое сильное сжатие и требует наибольшего времени обработки.
В следующем примере презентация сохраняется без сжатия:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.None
};
presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
В следующем примере используется максимальный уровень сжатия:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.Level9
};
presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
Сохранение презентаций без обновления миниатюры
При сохранении презентации в формате PPTX свойство PptxOptions.RefreshThumbnail управляет её миниатюрой документа:
trueрегенерирует миниатюру во время операции сохранения. Это значение по умолчанию.falseсохраняет существующую миниатюру. Если у презентации нет миниатюры, Aspose.Slides не генерирует её.
В следующем примере презентация сохраняется без обновления её миниатюры:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
RefreshThumbnail = false
};
presentation.Save("Output.pptx", SaveFormat.Pptx, options);
Note
Отключение обновления миниатюры может сократить время, необходимое для сохранения файла PPTX.Обновления прогресса сохранения в процентах
Чтобы отслеживать процесс сохранения, реализуйте интерфейс IProgressCallback и назначьте эту реализацию свойству ISaveOptions.ProgressCallback. Затем Aspose.Slides будет вызывать метод IProgressCallback.Reporting с значениями прогресса во время экспортa.
В следующем примере прогресс экспорта PDF выводится в консоль:
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PdfOptions
{
ProgressCallback = new ExportProgressHandler()
};
using var presentation = new Presentation("Sample.pptx");
presentation.Save("Output.pdf", SaveFormat.Pdf, options);
class ExportProgressHandler : IProgressCallback
{
public void Reporting(double progressValue)
{
var progress = Convert.ToInt32(progressValue);
Console.WriteLine($"{progress}% of the file has been converted.");
}
}
Note
Aspose предоставляет бесплатный PowerPoint Splitter, основанный на API Aspose.Slides. Он сохраняет выбранные слайды презентации в отдельные файлы PPT или PPTX.FAQ
Поддерживает ли Aspose.Slides инкрементальное или «быстрое сохранение»?
Нет. Каждая операция сохранения записывает полный выходной файл, а не только изменённые части.
Могут ли несколько потоков сохранять один и тот же объект Presentation?
Нет. Экземпляр Presentation не является потокобезопасным. Доступ к каждому экземпляру и его сохранение допускаются только из одного потока одновременно.
Что происходит с гиперссылкам и внешними связанными файлами при сохранении презентации?
Hyperlinks остаются в презентации. Aspose.Slides не копирует внешние связанные файлы, поэтому сохранённая презентация должна по‑прежнему иметь доступ к их расположениям.
Могу ли я сохранить метаданные документа, такие как автор, заголовок, компания и дата создания?
Да. Установите соответствующие свойства документа перед сохранением, и Aspose.Slides запишет их в выходной файл.