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()

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:

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.