Presentaties met wachtwoord beveiligen in Python

Overzicht

Een openingswachtwoord versleutelt een presentatie. Het juiste wachtwoord is vereist om de presentatie‑inhoud te laden en weer te geven, waardoor deze bescherming vertrouwelijkheid biedt.

Een openingswachtwoord verschilt van een schrijfbeschermingswachtwoord. Schrijfbescherming beperkt bewerken, maar versleutelt de inhoud niet en verhindert niet dat de presentatie wordt geladen. Voor het beheren van wachtwoorden voor het wijzigen van presentaties, zie Presentaties schrijfbeveiligen .

De workflows hieronder gelden voor zowel PPT‑ als PPTX‑presentaties. De voorbeelden gebruiken beide formaten wanneer hun gedrag op bestand‑ en stream‑basis belangrijk is.

Een presentatie versleutelen met een openingswachtwoord

Gebruik ProtectionManager.encrypt om een openingswachtwoord toe te wijzen. Gebruik vervolgens Presentation.save om de versleutelde presentatie op te slaan.

Het volgende voorbeeld versleutelt een PPTX‑presentatie:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("pres.pptx")
try:
    presentation.getProtectionManager().encrypt("open_password")
    presentation.save("encrypted-pres.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Documenteigenschappen openbaar houden

Standaard omvat Aspose.Slides documenteigenschappen bij de encryptie van een presentatie. De methode ProtectionManager.setEncryptDocumentProperties regelt dit gedrag onafhankelijk van de encryptie van de dia‑inhoud. Geef False door vóór het aanroepen van ProtectionManager.encrypt wanneer een indexeer‑, classificatie‑, zoek‑ of documentbeheersysteem metadata moet kunnen lezen zonder het openingswachtwoord.

Het volgende voorbeeld maakt een versleutelde PPTX‑presentatie, terwijl de ingebouwde documenteigenschappen openbaar blijven:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    properties = presentation.getDocumentProperties()
    properties.setAuthor("Contoso Knowledge Management")
    properties.setTitle("Quarterly Product Roadmap")
    properties.setKeywords("roadmap, planning, internal")

    presentation.getSlides().get_Item(0).setName("Encrypted presentation content")
    presentation.getProtectionManager().setEncryptDocumentProperties(False)
    presentation.getProtectionManager().encrypt("open_password")
    presentation.save("public-properties-encrypted.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

False doorgeven aan ProtectionManager.setEncryptDocumentProperties maakt niet de dia’s, masters, lay‑outs, vormen, media of andere presentatietekst openbaar. Het heeft alleen effect op documenteigenschappen. Zie Presentatie‑eigenschappen beheren om die eigenschappen te lezen zonder de versleutelde inhoud te laden.

Een versleutelde presentatie laden

Stel LoadOptions.setPassword in op het openingswachtwoord en geef de opties door aan Presentation bij het laden van het bestand. Het laden mislukt wanneer een openingswachtwoord vereist is maar het opgegeven 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-pres.pptx", load_options)
try:
    # Werk met de ontsleutelde presentatie.
    pass
finally:
    presentation.dispose()

Encryptie van een presentatie verwijderen

Laad de presentatie met het openingswachtwoord, roep ProtectionManager.removeEncryption aan en sla het resultaat op. De opgeslagen presentatie kan vervolgens zonder wachtwoord worden geladen.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, SaveFormat

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    presentation.getProtectionManager().removeEncryption()
    presentation.save("encryption-removed.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Een openingswachtwoord valideren vóór het laden

Gebruik PresentationFactory.getPresentationInfo om PresentationInfo te verkrijgen zonder een volledige presentatie‑instance te maken. Controleer PresentationInfo.isPasswordProtected voordat u een wachtwoord vraagt of valideert. Wanneer bescherming aanwezig is, valideer dan de opgegeven waarde met PresentationInfo.checkPassword .

Bestandspad‑workflow

Het volgende voorbeeld valideert een openingswachtwoord voor een PPTX‑bestand, geeft de gevalideerde waarde door aan LoadOptions.setPassword en laadt daarna de volledige presentatie:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_path)

if not presentation_info.isPasswordProtected():
    print("The presentation does not have an opening password.")
elif not presentation_info.checkPassword(password):
    print("The opening password is incorrect.")
else:
    load_options = LoadOptions()
    load_options.setPassword(password)

    presentation = Presentation(file_path, load_options)
    try:
        print("The presentation was validated and loaded successfully.")
    finally:
        presentation.dispose()

Stream‑workflow

De stream‑overload van PresentationFactory.getPresentationInfo biedt dezelfde workflow. Reset de positie van een seek‑bare stream vóór het laden van de volledige presentatie vanaf die stream.

Het volgende voorbeeld gebruikt een PPT‑bestand:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

FileInputStream = jpype.JClass("java.io.FileInputStream")

password = "open_password"

presentation_stream = FileInputStream("protected-presentation.ppt")
try:
    presentation_info = PresentationFactory.getInstance().getPresentationInfo(presentation_stream)

    if not presentation_info.isPasswordProtected():
        print("The presentation does not have an opening password.")
    elif not presentation_info.checkPassword(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.getChannel().position(0)

        load_options = LoadOptions()
        load_options.setPassword(password)

        presentation = Presentation(presentation_stream, load_options)
        try:
            print("The presentation was validated and loaded successfully.")
        finally:
            presentation.dispose()
finally:
    presentation_stream.close()

Teruggeefwaarden van checkPassword

PresentationInfo.checkPassword retourneert True alleen wanneer de presentatie een openingswachtwoord heeft en het opgegeven wachtwoord correct is. Het retourneert False in elk van de volgende gevallen:

  • Het wachtwoord is onjuist.
  • De presentatie heeft geen openingswachtwoord.
  • Het opgegeven wachtwoord is None of leeg.

Het gedrag is identiek voor PPT‑ en PPTX‑presentaties.

Controleren of een geladen presentatie versleuteld is

Na het laden van een presentatie met het juiste wachtwoord, controleer ProtectionManager.isEncrypted om te bevestigen dat de bronpresentatie versleuteld was. Om bescherming met een openingswachtwoord vóór het laden te detecteren, gebruik PresentationInfo.isPasswordProtected zoals hierboven beschreven.

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-pres.pptx", load_options)
try:
    is_encrypted = presentation.getProtectionManager().isEncrypted()
    print(f"The presentation is encrypted: {is_encrypted}")
finally:
    presentation.dispose()

Beveiligingsaanbevelingen

Een presentatie online met een wachtwoord beveiligen

  1. Open de applicatie Aspose.Slides Lock .
  2. Selecteer of upload de presentatie.
  3. Voer een wachtwoord in voor weergavebeveiliging.
  4. Voer eventueel een apart wachtwoord in voor bewerkingsbeveiliging.
  5. Pas de beveiliging toe en download het resulterende bestand.

FAQ

Wat is het verschil tussen een openingswachtwoord en een schrijfbeschermingswachtwoord?

Een openingswachtwoord versleutelt de presentatie en is vereist om de inhoud te laden. Een schrijfbeschermingswachtwoord beperkt bewerking zonder de inhoud te versleutelen.

Kan ik een openingswachtwoord valideren zonder alle dia’s te laden?

Ja. Verkrijg presentatiesinformatie, controleer of er een openingswachtwoordbeveiliging aanwezig is, en valideer het wachtwoord voordat u een volledige presentaties‑instance maakt.

Kan een applicatie metadata lezen zonder het openingswachtwoord?

Ja, maar alleen wanneer de presentatie is versleuteld met document‑eigenschap‑encryptie uitgeschakeld. De applicatie moet dan de alleen‑document‑eigenschappen‑laadmodus gebruiken die wordt beschreven in Presentatie‑eigenschappen beheren .

Ondersteunen de wachtwoord‑validatie‑workflows zowel PPT als PPTX?

Ja. Detectie en validatie van wachtwoorden op bestandspad‑ en stream‑basis werken hetzelfde voor PPT‑ en PPTX‑presentaties.