Сохранение презентаций на Android
Обзор
Открыть презентации на Android описывал, как использовать класс Presentation для открытия презентации. В этой статье объясняется, как создавать и сохранять презентации. Класс Presentation содержит содержимое презентации. Независимо от того, создаёте ли вы презентацию с нуля или изменяете существующую, по завершении её нужно сохранить. С Aspose.Slides для Android вы можете сохранять в файл или поток. Эта статья раскрывает различные способы сохранения презентации.
Сохранение презентаций в файл
Сохраните презентацию в файл, вызвав метод save класса Presentation. Передайте в метод имя файла и формат сохранения. Ниже приведён пример, показывающий, как сохранить презентацию с помощью Aspose.Slides.
// Создайте экземпляр класса Presentation, который представляет файл презентации.
Presentation presentation = new Presentation();
try {
// Выполните здесь некоторую работу...
// Сохраните презентацию в файл.
presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Сохранение презентаций в потоки
Вы можете сохранить презентацию в поток, передав объект выходного потока в метод save класса Presentation. Презентацию можно записать в различные типы потоков. В приведённом ниже примере мы создаём новую презентацию и сохраняем её в файловый поток.
// Создать экземпляр класса Presentation, который представляет файл презентации.
Presentation presentation = new Presentation();
try {
OutputStream fileStream = new FileOutputStream("Output.pptx");
try {
// Сохранить презентацию в поток.
presentation.save(fileStream, SaveFormat.Pptx);
} finally {
fileStream.close();
}
} finally {
presentation.dispose();
}
Сохранение презентаций с предустановленным типом представления
Aspose.Slides позволяет задать начальный вид, который PowerPoint использует при открытии сгенерированной презентации, через класс ViewProperties. Используйте метод setLastView с значением из перечисления ViewType.
Presentation presentation = new Presentation();
try {
presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
presentation.save("SlideMasterView.pptx", 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.
PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);
// Создайте экземпляр класса Presentation, который представляет файл презентации.
Presentation presentation = new Presentation();
try {
// Сохраните презентацию в строгом формате Office Open XML.
presentation.save("StrictOfficeOpenXml.pptx", 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.
Метод IPptxOptions.setZip64Mode позволяет выбрать, когда использовать расширения формата ZIP64 при сохранении файла Office Open XML.
Этот метод можно использовать с следующими режимами:
- IfNecessary использует расширения ZIP64 только в случае, если презентация превышает указанные ограничения. Это режим по умолчанию.
- Never никогда не использует расширения ZIP64.
- Always всегда использует расширения ZIP64.
Ниже приведён код, демонстрирующий, как сохранить презентацию как PPTX с включёнными расширениями ZIP64:
PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setZip64Mode(Zip64Mode.Always);
Presentation presentation = new Presentation("Sample.pptx");
try {
presentation.save("OutputZip64.pptx", SaveFormat.Pptx, pptxOptions);
} finally {
presentation.dispose();
}
NOTE
При сохранении с параметром Zip64Mode.Never будет выброшено исключение PptxException, если презентацию невозможно сохранить в формате ZIP32.Сохранение презентаций без обновления миниатюры
Метод PptxOptions.setRefreshThumbnail управляет генерацией миниатюры при сохранении презентации в формате PPTX:
- Если установлен в
true, миниатюра обновляется во время сохранения. Это значение по умолчанию. - Если установлен в
false, текущая миниатюра сохраняется. Если у презентации нет миниатюры, она не будет создана.
В приведённом ниже коде презентация сохраняется в PPTX без обновления её миниатюры.
PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setRefreshThumbnail(false);
Presentation presentation = new Presentation("Sample.pptx");
try {
presentation.save("Output.pptx", SaveFormat.Pptx, pptxOptions);
}
finally {
presentation.dispose();
}
Info
Эта опция позволяет сократить время, необходимое для сохранения презентации в формате PPTX.Сохранение прогресса в процентах
Интерфейс IProgressCallback используется через метод setProgressCallback, предоставляемый интерфейсом ISaveOptions и абстрактным классом SaveOptions. Реализуйте IProgressCallback и передайте его в setProgressCallback, чтобы получать обновления о прогрессе сохранения в процентах.
Ниже представлены фрагменты кода, показывающие, как использовать IProgressCallback.
ISaveOptions saveOptions = new PdfOptions();
saveOptions.setProgressCallback(new ExportProgressHandler());
Presentation presentation = new Presentation("Sample.pptx");
try {
presentation.save("Output.pdf", SaveFormat.Pdf, saveOptions);
} finally {
presentation.dispose();
}
class ExportProgressHandler implements IProgressCallback {
public void reporting(double progressValue) {
// Используйте здесь значение прогресса в процентах.
int progress = (int) progressValue;
System.out.println(progress + "% of the file has been converted.");
}
}
Info
Aspose разработала бесплатное приложение PowerPoint Splitter, использующее собственный API. Приложение позволяет разделять презентацию на несколько файлов, сохраняя выбранные слайды как новые файлы PPTX или PPT.FAQ
Поддерживается ли «быстрое сохранение» (инкрементальное сохранение), когда записываются только изменения?
Нет. При каждом сохранении создаётся полностью новый целевой файл; инкрементальное «быстрое сохранение» не поддерживается.
Можно ли сохранять один и тот же объект Presentation из нескольких потоков?
Нет. Объект Presentation не является потокобезопасным; сохраняйте его из одного потока.
Что происходит с гиперссылками и внешними связанными файлами при сохранении?
Гиперссылки сохраняются. Внешние связанные файлы (например, видео по относительным путям) не копируются автоматически — убедитесь, что указанные пути остаются доступными.
Можно ли задать/сохранить метаданные документа (автора, название, компанию, дату)?
Да. Стандартные свойства документа поддерживаются и будут записаны в файл при сохранении.