Presentaties openen in Python via Java
Inleiding
Aspose.Slides for Python via Java kan PowerPoint- en OpenDocument-presentaties laden vanuit bestanden en streams. Nadat een presentatie is geladen, kunt u de structuur inspecteren, dia’s bewerken, resources beheren en deze opslaan in het originele of een ander ondersteund formaat.
Het laadgedrag kan aangepast worden via de LoadOptions-klasse. U kunt bijvoorbeeld een openingswachtwoord opgeven, grote binaire objecten buiten het Java-heap-geheugen houden, externe resources beheren, of ingesloten binaire gegevens weglaten.
Open Presentaties
Na het laden van een bestand of stream kunt u bepalen wat het oorspronkelijke presentatieformaat is om te kiezen hoe uw applicatie deze verwerkt.
Om een bestaande presentatie te openen, geeft u het pad naar het bestand door aan de Presentation-constructor. Maak de presentatie vrij nadat u klaar bent, zodat bestands-handles, tijdelijke gegevens en andere resources meteen worden vrijgegeven.
Het volgende Python-voorbeeld toont hoe u een presentatie opent en het aantal dia’s opvraagt:
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()
Open wachtwoord‑beveiligde presentaties
Een openingswachtwoord versleutelt de inhoud van de presentatie. Om de volledige presentatie te laden, geeft u het juiste wachtwoord door aan LoadOptions.setPassword en levert u de opties aan de Presentation-constructor. Het laden mislukt wanneer het wachtwoord ontbreekt of onjuist is.
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()
Voor wachtwoorddetectie, validatie en encryptieworkflows, zie Password-Protect Presentations. Als een versleutelde presentatie opzettelijk is opgeslagen met openbare documenteigenschappen, kunnen die eigenschappen gelezen worden zonder wachtwoord; zie Manage Presentation Properties.
Open grote presentaties
LoadOptions.getBlobManagementOptions retourneert opties die bepalen hoe Aspose.Slides grote binaire objecten (BLOB’s) zoals afbeeldingen, audio en video behandelt. U kunt het bronbestand vergrendeld houden, tijdelijke bestanden toestaan en de hoeveelheid BLOB-gegevens die in het geheugen worden bewaard beperken.
De volgende Python-code laat zien hoe u een grote presentatie laadt (bijvoorbeeld 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
Met PresentationLockingBehavior.KeepLocked blijft het bronbestand vergrendeld totdat de presentatie‑instantie wordt vrijgegeven. Verplaats, overschrijf of verwijder het bronbestand niet zolang die instantie bestaat.
Aspose.Slides kan de inhoud van een invoerstroom kopiëren tijdens het laden. Voor grote presentaties is een bestandspad doorgaans efficiënter dan een stream. Zie Manage BLOBs voor extra opslag‑ en geheugemanagementopties.
Beheer externe resources
LoadOptions.setResourceLoadingCallback accepteert een JPype-proxy die de Java-resource-laadcallback-interface implementeert. De callback kan vervangende data leveren, een resource omleiden, de standaardlader gebruiken of de resource overslaan. Dit is handig wanneer presentaties externe afbeeldingen bevatten die volgens toepassingsspecifieke beveiligings‑ of opslagregels moeten worden opgelost.
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()
Laad presentaties zonder ingesloten binaire objecten
Een presentatie kan ingesloten binaire data bevatten die een applicatie niet nodig heeft of niet wil behouden. Voorbeelden zijn:
- VBA-projecten, beschikbaar via Presentation.getVbaProject;
- ingesloten OLE-data, beschikbaar via OleEmbeddedDataInfo.getEmbeddedFileData;
- ActiveX-controlegegevens, beschikbaar via Control.getActiveXControlBinary.
Stel LoadOptions.setDeleteEmbeddedBinaryObjects in op True om deze binaire data bij het laden te verwijderen. Sla de geladen presentatie op om het opgeschoonde resultaat te behouden.
Deze optie vermindert de blootstelling aan ongewenste ingesloten payloads, maar vormt geen volledige malware-detectie- of content-sanitiserings-systeem.
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
Hoe kan ik zien dat een bestand beschadigd is en niet geopend kan worden?
Aspose.Slides werpt tijdens het laden een parser- of formaat-exception. Verwerk die fout apart van een foutmelding voor een onjuist wachtwoord, zodat de applicatie de oorzaak nauwkeurig kan rapporteren.
Wat gebeurt er als vereiste lettertypen ontbreken?
De presentatie kan nog steeds geladen worden, maar weergave en export kunnen lettertypen vervangen. U kunt configure font substitution of provide custom fonts gebruiken om de output voorspelbaarder te maken.
Laadt het laden van een presentatie ook de ingesloten media?
Ingesloten audio en video worden beschikbaar via het presentatiemodel. Externe resources worden opgelost volgens het geconfigureerde resource-laadgedrag en kunnen onbeschikbaar zijn als hun locaties niet toegankelijk zijn.