Buka Presentasi di Android
Pendahuluan
Selain membuat presentasi PowerPoint dari nol, Aspose.Slides juga memungkinkan Anda membuka presentasi yang sudah ada. Setelah memuat presentasi, Anda dapat mengambil informasi tentangnya, mengedit konten slide, menambahkan slide baru, menghapus yang sudah ada, dan lainnya.
Buka Presentasi
Untuk membuka presentasi yang sudah ada, buat instance kelas Presentation dan berikan jalur file ke konstruktor-nya.
Contoh Java berikut menunjukkan cara membuka sebuah presentasi dan mendapatkan jumlah slidennya:
// Buat instance kelas Presentation dan berikan jalur file ke konstruktor-nya.
Presentation presentation = new Presentation("Sample.pptx");
try {
// Cetak jumlah total slide dalam presentasi.
System.out.println(presentation.getSlides().size());
} finally {
presentation.dispose();
}
Buka Presentasi yang Dilindungi Password
Ketika Anda perlu membuka presentasi yang dilindungi password, berikan password melalui metode setPassword pada kelas LoadOptions untuk mendekripsi dan memuatnya. Kode Java berikut mendemonstrasikan operasi ini:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
Presentation presentation = new Presentation("Sample.pptx", loadOptions);
try {
// Lakukan operasi pada presentasi yang sudah didekripsi.
} finally {
presentation.dispose();
}
Buka Presentasi Besar
Aspose.Slides menyediakan opsi—khususnya metode getBlobManagementOptions dalam kelas LoadOptions—untuk membantu Anda memuat presentasi berukuran besar.
Kode Java berikut menunjukkan cara memuat presentasi besar (misalnya, 2 GB):
final String filePath = "LargePresentation.pptx";
LoadOptions loadOptions = new LoadOptions();
// Pilih perilaku KeepLocked—file presentasi akan tetap terkunci selama masa hidup
// instance Presentation, tetapi tidak perlu dimuat ke memori atau disalin ke file sementara.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB
Presentation presentation = new Presentation(filePath, loadOptions);
try {
// Presentasi besar telah dimuat dan dapat digunakan, sementara konsumsi memori tetap rendah.
// Lakukan perubahan pada presentasi.
presentation.getSlides().get_Item(0).setName("Large presentation");
// Simpan presentasi ke file lain. Konsumsi memori tetap rendah selama operasi ini.
presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);
// Jangan lakukan ini! Pengecualian I/O akan dilempar karena file terkunci hingga objek presentasi dibuang.
//Files.delete(Paths.get(filePath));
} finally {
presentation.dispose();
}
// Tidak apa-apa melakukannya di sini. File sumber tidak lagi terkunci oleh objek presentasi.
Files.delete(Paths.get(filePath));
Info
Untuk mengatasi beberapa keterbatasan saat bekerja dengan aliran, Aspose.Slides mungkin menyalin isi aliran. Memuat presentasi besar dari aliran menyebabkan presentasi disalin dan dapat memperlambat proses pemuatan. Oleh karena itu, ketika Anda perlu memuat presentasi besar, kami sangat menyarankan menggunakan jalur file presentasi daripada aliran.
Saat membuat presentasi yang berisi objek besar (video, audio, gambar beresolusi tinggi, dll.), Anda dapat menggunakan BLOB management untuk mengurangi konsumsi memori.
Kendalikan Sumber Daya Eksternal
Aspose.Slides menyediakan antarmuka IResourceLoadingCallback yang memungkinkan Anda mengelola sumber daya eksternal. Kode Java berikut menunjukkan cara menggunakan antarmuka IResourceLoadingCallback:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new ImageLoadingHandler());
Presentation presentation = new Presentation("Sample.pptx", loadOptions);
class ImageLoadingHandler implements IResourceLoadingCallback {
public int resourceLoading(IResourceLoadingArgs args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// Muat gambar pengganti.
byte[] imageData = getImageBytes("aspose-logo.jpg"); // Gunakan metode apa saja untuk mendapatkan byte
args.setData(imageData);
return ResourceLoadingAction.UserProvided;
} catch (RuntimeException ex) {
return ResourceLoadingAction.Skip;
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (args.getOriginalUri().endsWith(".png")) {
// Atur URL pengganti.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return ResourceLoadingAction.Default;
}
// Lewati semua gambar lainnya.
return ResourceLoadingAction.Skip;
}
}
Muat Presentasi tanpa Objek Biner Tersemat
Presentasi PowerPoint dapat berisi tipe objek biner tersemat berikut:
- Proyek VBA (dapat diakses melalui IPresentation.getVbaProject);
- Data tersemat objek OLE (dapat diakses melalui IOleEmbeddedDataInfo.getEmbeddedFileData);
- Data biner kontrol ActiveX (dapat diakses melalui IControl.getActiveXControlBinary).
Dengan menggunakan metode ILoadOptions.setDeleteEmbeddedBinaryObjects, Anda dapat memuat presentasi tanpa objek biner tersemat apa pun.
Metode ini berguna untuk menghapus konten biner yang berpotensi berbahaya. Kode Java berikut menunjukkan cara memuat presentasi tanpa konten biner tersemat apa pun:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
Presentation presentation = new Presentation("malware.ppt", loadOptions);
try {
// Lakukan operasi pada presentasi.
} finally {
presentation.dispose();
}
FAQ
Bagaimana saya dapat mengetahui bahwa sebuah file rusak dan tidak dapat dibuka?
Anda akan menerima pengecualian validasi parsing/format saat memuat. Kesalahan semacam ini sering menyebutkan struktur ZIP yang tidak valid atau rekaman PowerPoint yang rusak.
Apa yang terjadi jika font yang diperlukan tidak ada saat membuka?
File akan terbuka, tetapi kemudian rendering/export mungkin menggantikan font. Configure font substitutions atau add the required fonts ke lingkungan runtime.
Bagaimana dengan media tersemat (video/audio) saat membuka?
Mereka menjadi tersedia sebagai sumber daya presentasi. Jika media dirujuk melalui jalur eksternal, pastikan jalur tersebut dapat diakses di lingkungan Anda; jika tidak, rendering/export mungkin mengabaikan media.