Membuka Presentasi dengan Python via Java
Pendahuluan
Aspose.Slides for Python via Java dapat memuat presentasi PowerPoint dan OpenDocument dari file dan aliran. Setelah sebuah presentasi dimuat, Anda dapat memeriksa strukturnya, mengedit slide, mengelola sumber daya, dan menyimpannya dalam format asli atau format lain yang didukung.
Perilaku pemuatan dapat disesuaikan melalui kelas LoadOptions. Misalnya, Anda dapat menyediakan kata sandi pembuka, menyimpan objek biner besar di luar memori heap Java, mengontrol sumber daya eksternal, atau mengabaikan data biner yang disematkan.
Buka Presentasi
Setelah memuat file atau aliran, Anda dapat menentukan format presentasi aslinya untuk memilih cara aplikasi Anda memprosesnya.
Untuk membuka presentasi yang ada, berikan jalur file ke konstruktor Presentation. Buang presentasi setelah digunakan sehingga pegangan file, data sementara, dan sumber daya lainnya segera dilepaskan.
Contoh Python berikut menunjukkan cara membuka presentasi dan mendapatkan jumlah slidennya:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("sample.pptx")
try:
print("Slide count:", presentation.getSlides().size())
finally:
presentation.dispose()
Buka Presentasi yang Dilindungi Kata Sandi
Kata sandi pembuka mengenkripsi konten presentasi. Untuk memuat seluruh presentasi, berikan kata sandi yang benar ke LoadOptions.setPassword dan sediakan opsi tersebut ke konstruktor Presentation. Pemuatan gagal bila kata sandi tidak ada atau salah.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation
load_options = LoadOptions()
load_options.setPassword("open_password")
presentation = Presentation("encrypted-presentation.pptx", load_options)
try:
print("Slide count:", presentation.getSlides().size())
finally:
presentation.dispose()
Untuk deteksi kata sandi, validasi, dan alur kerja enkripsi, lihat Password-Protect Presentations. Jika sebuah presentasi terenkripsi sengaja disimpan dengan properti dokumen publik, properti tersebut dapat dibaca tanpa kata sandi; lihat Manage Presentation Properties.
Buka Presentasi Besar
LoadOptions.getBlobManagementOptions mengembalikan opsi yang mengontrol bagaimana Aspose.Slides menangani objek biner besar seperti gambar, audio, dan video. Anda dapat menjaga file sumber tetap terkunci, memperbolehkan file sementara, dan membatasi jumlah data BLOB yang disimpan dalam memori.
Kode Python berikut menunjukkan cara memuat presentasi besar (misalnya, 2 GB):
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation, PresentationLockingBehavior, SaveFormat
file_path = "large-presentation.pptx"
load_options = LoadOptions()
load_options.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked)
load_options.getBlobManagementOptions().setTemporaryFilesAllowed(True)
load_options.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024)
presentation = Presentation(file_path, load_options)
try:
presentation.getSlides().get_Item(0).setName("Large presentation")
presentation.save("large-presentation-copy.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Note
Dengan PresentationLockingBehavior.KeepLocked, file sumber tetap terkunci sampai instance presentasi dibuang. Jangan memindahkan, menimpa, atau menghapus file sumber selama instance tersebut masih hidup.
Aspose.Slides mungkin menyalin isi aliran input saat memuatnya. Untuk presentasi besar, jalur file biasanya lebih efisien dibandingkan aliran. Lihat Manage BLOBs untuk opsi penyimpanan dan manajemen memori tambahan.
Kendalikan Sumber Daya Eksternal
LoadOptions.setResourceLoadingCallback menerima proxy JPype yang mengimplementasikan antarmuka callback pemuatan sumber daya Java. Callback dapat menyediakan data pengganti, mengarahkan ulang sebuah sumber daya, menggunakan pemuat default, atau melewati sumber daya tersebut. Ini berguna ketika presentasi berisi gambar eksternal yang harus diselesaikan sesuai dengan aturan keamanan atau penyimpanan khusus aplikasi.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from pathlib import Path
from asposeslides.api import LoadOptions, Presentation, ResourceLoadingAction
class ImageLoadingHandler:
def resourceLoading(self, resource_loading_arguments):
is_jpeg = str(resource_loading_arguments.getOriginalUri()).lower().endswith(".jpg")
approved_image_path = Path("approved-image.jpg")
if not is_jpeg or not approved_image_path.exists():
return ResourceLoadingAction.Skip
try:
image_data = approved_image_path.read_bytes()
java_image_data = jpype.JArray(jpype.JByte)(image_data)
resource_loading_arguments.setData(java_image_data)
return ResourceLoadingAction.UserProvided
except OSError:
print("The approved replacement image could not be read.")
return ResourceLoadingAction.Skip
load_options = LoadOptions()
image_loading_handler = ImageLoadingHandler()
callback = jpype.JProxy("com.aspose.slides.IResourceLoadingCallback", inst=image_loading_handler)
load_options.setResourceLoadingCallback(callback)
presentation = Presentation("presentation-with-external-images.pptx", load_options)
try:
print("Slide count:", presentation.getSlides().size())
finally:
presentation.dispose()
Muat Presentasi tanpa Objek Biner yang Disematkan
Sebuah presentasi dapat berisi data biner yang disematkan yang tidak diperlukan atau tidak ingin disimpan oleh aplikasi. Contohnya meliputi:
- Proyek VBA, tersedia melalui Presentation.getVbaProject;
- data OLE yang disematkan, tersedia melalui OleEmbeddedDataInfo.getEmbeddedFileData;
- data kontrol ActiveX, tersedia melalui Control.getActiveXControlBinary.
Set LoadOptions.setDeleteEmbeddedBinaryObjects ke True untuk menghapus data biner ini saat memuat. Simpan presentasi yang dimuat untuk mempertahankan hasil yang telah dibersihkan.
Opsi ini mengurangi paparan pada payload yang tidak diinginkan, tetapi bukan sistem deteksi malware atau sanitasi konten yang lengkap.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadOptions, Presentation, SaveFormat
load_options = LoadOptions()
load_options.setDeleteEmbeddedBinaryObjects(True)
presentation = Presentation("presentation-with-embedded-data.pptx", load_options)
try:
presentation.save("presentation-without-embedded-data.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
FAQ
Bagaimana saya dapat mengetahui bahwa file rusak dan tidak dapat dibuka?
Aspose.Slides melemparkan pengecualian parsing atau format saat memuat. Tangani kegagalan tersebut secara terpisah dari kesalahan kata sandi yang salah sehingga aplikasi dapat melaporkan penyebabnya dengan akurat.
Apa yang terjadi jika font yang dibutuhkan tidak ada?
Presentasi masih dapat dimuat, tetapi rendering dan ekspor mungkin mengganti font. Anda dapat mengonfigurasi substitusi font atau menyediakan font khusus untuk membuat output lebih dapat diprediksi.
Apakah memuat sebuah presentasi juga memuat media yang disematkan?
Audio dan video yang disematkan menjadi tersedia melalui model objek presentasi. Sumber daya eksternal diselesaikan sesuai dengan perilaku pemuatan sumber daya yang dikonfigurasi dan mungkin tidak tersedia jika lokasinya tidak dapat diakses.