Сохранение презентаций в JavaScript
Обзор
Open Presentations in JavaScript описал, как использовать класс Presentation для открытия презентации. В этой статье объясняется, как создавать и сохранять презентации. Класс Presentation содержит содержимое презентации. Независимо от того, создаёте ли вы презентацию с нуля или изменяете существующую, её нужно сохранить по окончании работы. С помощью Aspose.Slides для Node.js вы можете сохранять в файл или поток. В этой статье рассматриваются различные способы сохранения презентации.
Сохранение презентаций в файлы
Сохраните презентацию в файл, вызвав метод save класса Presentation. Передайте в метод имя файла и формат сохранения. Ниже показан пример сохранения презентации с помощью Aspose.Slides.
// Создаёт экземпляр класса Presentation, представляющего файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Выполните здесь некоторую работу...
// Сохраните презентацию в файл.
presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Сохранение презентаций в потоки
Вы можете сохранить презентацию в поток, передав выходной поток методу save класса Presentation. Презентацию можно записать в различные типы потоков. В приведённом примере мы создаём новую презентацию и сохраняем её в файловый поток.
// Создаёт экземпляр класса Presentation, представляющего файл презентации.
let presentation = new aspose.slides.Presentation();
try {
let fileStream = java.newInstanceSync("java.io.FileOutputStream", "Output.pptx");
try {
// Сохранить презентацию в поток.
presentation.save(fileStream, aspose.slides.SaveFormat.Pptx);
} finally {
fileStream.close();
}
} finally {
presentation.dispose();
}
Сохранение презентаций с предопределённым типом представления
Aspose.Slides позволяет задать начальный вид, который PowerPoint использует при открытии сгенерированной презентации, через класс ViewProperties. Используйте метод setLastView со значением из перечисления ViewType.
let presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("SlideMasterView.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Сохранение презентаций в строгом формате Office Open XML
Aspose.Slides позволяет сохранять презентацию в строгом формате Office Open XML. Используйте класс PptxOptions и задайте его свойство conformance при сохранении. Если установить Conformance.Iso29500_2008_Strict, выходной файл будет сохранён в строгом формате Office Open XML.
Ниже пример создания презентации и её сохранения в строгом формате Office Open XML.
let options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
// Создаёт экземпляр класса Presentation, представляющего файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Сохранить презентацию в строгом формате Office Open XML.
presentation.save("StrictOfficeOpenXml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Сохранение презентаций в формате Office Open XML в режиме Zip64
Файл Office Open XML — это ZIP‑архив, который накладывает ограничения в 4 ГБ (2^32 байт) на несжатый размер любого файла, сжатый размер любого файла и общий размер архива, а также ограничивает количество файлов в архиве 65 535 (2^16‑1). Расширения формата ZIP64 увеличивают эти ограничения до 2^64.
Метод PptxOptions.setZip64Mode позволяет выбрать, когда использовать расширения ZIP64 при сохранении файла Office Open XML.
Этот метод может использоваться со следующими режимами:
- IfNecessary использует расширения ZIP64 только если презентация превышает вышеуказанные ограничения. Это режим по умолчанию.
- Never никогда не использует расширения ZIP64.
- Always всегда использует расширения ZIP64.
Ниже показан код, демонстрирующий сохранение презентации в формате PPTX с включёнными расширениями ZIP64:
let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setZip64Mode(aspose.slides.Zip64Mode.Always);
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
presentation.save("OutputZip64.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
presentation.dispose();
}
NOTE
При сохранении с использованием Zip64Mode.Never будет выброшено исключение PptxException, если презентацию нельзя сохранить в формате ZIP32.Сохранение презентаций без обновления миниатюры
Метод PptxOptions.setRefreshThumbnail управляет генерацией миниатюры при сохранении презентации в PPTX:
- Если установлено
true, миниатюра обновляется во время сохранения. Это значение по умолчанию. - Если установлено
false, текущая миниатюра сохраняется. Если у презентации нет миниатюры, она не будет генерироваться.
В приведённом коде презентация сохраняется в PPTX без обновления её миниатюры.
let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setRefreshThumbnail(false);
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
}
finally {
presentation.dispose();
}
Info
Эта опция помогает сократить время, требуемое для сохранения презентации в формате PPTX.Отчёт о прогрессе сохранения в процентах
Отчёт о прогрессе сохранения настраивается через метод setProgressCallback класса SaveOptions и его подклассов. Передайте Java‑прокси, реализующий интерфейс IProgressCallback; во время экспорта обратный вызов будет получать периодические обновления в процентах.
Ниже приведены фрагменты кода, показывающие, как использовать IProgressCallback.
const ExportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
// Используйте значение процента прогресса здесь.
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
let saveOptions = new aspose.slides.PdfOptions();
saveOptions.setProgressCallback(ExportProgressHandler);
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
presentation.save("Output.pdf", aspose.slides.SaveFormat.Pdf, saveOptions);
} finally {
presentation.dispose();
}
Info
Aspose разработала бесплатное приложение PowerPoint Splitter на основе собственного API. Приложение позволяет разбить презентацию на несколько файлов, сохранив выбранные слайды как новые файлы PPTX или PPT.FAQ
Поддерживается ли «быстрое сохранение» (инкрементальное сохранение), при котором записываются только изменения?
Нет. При сохранении каждый раз создаётся полный целевой файл; инкрементальное «быстрое сохранение» не поддерживается.
Можно ли безопасно сохранять один и тот же объект Presentation из нескольких потоков?
Нет. Экземпляр Presentation не является потокобезопасным; сохраняйте его только из одного потока.
Что происходит с гиперссылками и внешними связанными файлами при сохранении?
Гиперссылки сохраняются. Внешние связанные файлы (например, видео по относительным путям) не копируются автоматически — убедитесь, что указанные пути остаются доступными.
Можно ли задать/сохранить метаданные документа (Автор, Заголовок, Компания, Дата)?
Да. Стандартные свойства документа поддерживаются и будут записаны в файл при сохранении.