Сохранение презентаций на Android
Обзор
Open Presentations on Android описывает, как использовать класс Presentation для открытия презентации. В этой статье объясняется, как создавать и сохранять презентации. Класс Presentation содержит содержимое презентации. Независимо от того, создаёте ли вы презентацию с нуля или изменяете существующую, вам потребуется сохранить её после завершения работы. С помощью Aspose.Slides для Android можно сохранять в файл или поток. Эта статья объясняет различные способы сохранения презентации.
Сохранение презентаций в файлы
Сохраните презентацию в файл, вызвав метод save класса Presentation. Передайте в метод имя файла и формат сохранения. Ниже приведён пример, показывающий, как сохранить презентацию с помощью Aspose.Slides.
import com.aspose.slides.*;
// Создайте экземпляр класса Presentation, который представляет файл презентации.
Presentation presentation = new Presentation();
try {
// Выполните некоторую работу здесь...
// Сохраните презентацию в файл.
presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Сохранение презентаций в потоки
Вы можете сохранить презентацию в поток, передав выходной поток в метод save класса Presentation. Презентацию можно записать во множество типов потоков. В примере ниже мы создаём новую презентацию и сохраняем её в файловый поток.
import com.aspose.slides.*;
import java.io.FileOutputStream;
import java.io.OutputStream;
// Создайте экземпляр класса 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.
import com.aspose.slides.*;
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.
import com.aspose.slides.*;
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 GB (2^32 байт) на несжатый размер любого файла, сжатый размер любого файла и общий размер архива, а также ограничивает количество файлов в архиве до 65 535 (2^16‑1). Расширения формата ZIP64 повышают эти ограничения до 2^64.
Метод IPptxOptions.setZip64Mode позволяет выбрать, когда использовать расширения формата ZIP64 при сохранении файла Office Open XML.
Этот метод можно использовать со следующими режимами:
- IfNecessary использует расширения формата ZIP64 только если презентация превышает указанные выше ограничения. Это режим по умолчанию.
- Never никогда не использует расширения формата ZIP64.
- Always всегда использует расширения формата ZIP64.
Следующий код демонстрирует, как сохранить презентацию как файл PPTX с включёнными расширениями формата ZIP64:
import com.aspose.slides.*;
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.Сохранение презентаций в формате Office Open XML с уровнями сжатия
При работе с большими презентациями можно регулировать уровень сжатия, чтобы сбалансировать размер файла и время обработки. В зависимости от требований вы можете предпочесть более быструю обработку или меньший размер выходного файла.
Aspose.Slides предоставляет метод IPptxOptions.setCompressionLevel, который позволяет задать уровень сжатия при сохранении презентации в формате Office Open XML.
Доступны следующие уровни сжатия:
- None: Сжатие не применяется. Файлы сохраняются как есть.
- Level1: Самое быстрое сжатие с самым низким коэффициентом сжатия.
- Level2: Быстрое сжатие с немного лучшим коэффициентом сжатия, чем Level1.
- Level3: Обеспечивает лучшее сжатие, чем Level2, с умеренным влиянием на время обработки.
- Level4: Обеспечивает лучшее сжатие, чем Level3.
- Level5: Обеспечивает улучшенное сжатие по сравнению с Level4, требуя дополнительного времени обработки.
- Level6: Стандартное сжатие, обеспечивающее хороший баланс между скоростью обработки и размером файла. Это уровень сжатия по умолчанию.
- Level7: Обеспечивает лучшее сжатие, чем Level6, но с более медленной обработкой.
- Level8: Обеспечивает лучшее сжатие, чем Level7.
- Level9: Максимальное сжатие. Даёт наименьший размер файла, но требует самого длительного времени обработки.
Следующий пример демонстрирует, как сохранить презентацию как файл PPTX без сжатия:
import com.aspose.slides.*;
PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setCompressionLevel(CompressionLevel.None);
Presentation presentation = new Presentation("Sample.pptx");
try {
presentation.save("Sample-out.pptx", SaveFormat.Pptx, pptxOptions);
} finally {
presentation.dispose();
}
Этот пример показывает, как сохранить презентацию как файл PPTX с максимальным сжатием:
import com.aspose.slides.*;
PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setCompressionLevel(CompressionLevel.Level9);
Presentation presentation = new Presentation("Sample.pptx");
try {
presentation.save("Sample-level9.pptx", SaveFormat.Pptx, pptxOptions);
} finally {
presentation.dispose();
}
Сохранение презентаций без обновления миниатюры
Метод PptxOptions.setRefreshThumbnail управляет генерацией миниатюры при сохранении презентации в формат PPTX:
- Если установить
true, миниатюра обновляется при сохранении. Это значение по умолчанию. - Если установить
false, текущая миниатюра сохраняется. Если у презентации нет миниатюры, она не будет создана.
В коде ниже презентация сохраняется в PPTX без обновления её миниатюры.
import com.aspose.slides.*;
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.
import com.aspose.slides.*;
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();
}
import com.aspose.slides.*;
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 не является потокобезопасным; сохраняйте его из одного потока.
Что происходит с гиперссылками и внешними связанными файлами при сохранении?
Гиперссылки сохраняются. Внешние связанные файлы (например, видео по относительным путям) не копируются автоматически — убедитесь, что указанные пути остаются доступными.
Можно ли задавать/сохранять метаданные документа (Автор, Заголовок, Компания, Дата)?
Да. Поддерживаются стандартные свойства документа, которые будут записаны в файл при сохранении.