Öppna presentationer i Python via Java

Introduktion

Aspose.Slides för Python via Java kan läsa in PowerPoint- och OpenDocument-presentationer från filer och strömmar. När en presentation har lästs in kan du inspektera dess struktur, redigera bilder, hantera resurser och spara den i originalformatet eller något annat stödd format.

Laddningsbeteendet kan anpassas via klassen LoadOptions. Till exempel kan du ange ett öppningslösenord, hålla stora binära objekt utanför Java‑heap‑minnet, kontrollera externa resurser eller utelämna inbäddade binära data.

Öppna presentationer

Efter att ha läst in en fil eller ström kan du fastställa dess ursprungliga presentationsformat för att välja hur din applikation behandlar den.

För att öppna en befintlig presentation, skicka dess filsökväg till konstruktorn Presentation. Släpp presentationen efter användning så att filhandtag, temporära data och andra resurser frigörs omedelbart.

Följande Python‑exempel visar hur man öppnar en presentation och får antalet bilder:

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

Öppna lösenordsskyddade presentationer

Ett öppningslösenord krypterar presentationsinnehållet. För att läsa in hela presentationen, skicka det korrekta lösenordet till LoadOptions.setPassword och ange alternativen till konstruktorn Presentation. Inläsning misslyckas om lösenordet saknas eller är felaktigt.

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

For password detection, validation, and encryption workflows, see Password-Protect Presentations. If an encrypted presentation was deliberately saved with public document properties, those properties can be read without a password; see Manage Presentation Properties.

Öppna stora presentationer

LoadOptions.getBlobManagementOptions returnerar alternativ som styr hur Aspose.Slides hanterar binära stora objekt som bilder, ljud och video. Du kan hålla källfilen låst, tillåta temporära filer och begränsa mängden BLOB‑data som behålls i minnet.

Följande Python‑kod demonstrerar hur man läser in en stor presentation (till exempel 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()

Kontrollera externa resurser

LoadOptions.setResourceLoadingCallback accepterar en JPype‑proxy som implementerar Java‑gränssnittet för resursladdning. Återanropet kan leverera ersättningsdata, omdirigera en resurs, använda standardladdaren eller hoppa över resursen. Detta är användbart när presentationer innehåller externa bilder som måste lösas enligt applikationsspecifika säkerhets‑ eller lagringsregler.

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

Läs in presentationer utan inbäddade binära objekt

En presentation kan innehålla inbäddade binära data som en applikation inte behöver eller inte vill behålla. Exempel inkluderar:

Ange LoadOptions.setDeleteEmbeddedBinaryObjects till True för att ta bort dessa binära data under inläsning. Spara den inlästa presentationen för att behålla det sanerade resultatet.

Detta alternativ minskar risken för oönskade inbäddade payloads, men det är inte ett fullständigt system för skadlig‑kod‑detektering eller innehållssanering.

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

Hur kan jag avgöra att en fil är korrumperad och inte kan öppnas?

Aspose.Slides kastar ett pars‑ eller formatfel under inläsning. Hantera det felet separat från ett felaktigt lösenord så att applikationen kan rapportera orsaken på ett korrekt sätt.

Vad händer om nödvändiga teckensnitt saknas?

Presentationen kan fortfarande läsas in, men rendering och export kan ersätta teckensnitt. Du kan configure font substitution eller provide custom fonts för att göra resultatet mer förutsägbart.

Laddar inläsning av en presentation även dess inbäddade media?

Inbäddat ljud och video blir tillgängliga via presentationsobjektmodellen. Externa resurser löses upp enligt den konfigurerade resursladdningsbeteendet och kan vara otillgängliga om deras platser inte kan nås.