Prezentációk jelszóval való védelme Pythonban

Áttekintés

A nyitó jelszó titkosítja a prezentációt. A helyes jelszó szükséges a prezentáció tartalmának betöltéséhez és megtekintéséhez, így ez a védelem a bizalmasságot biztosítja.

A nyitó jelszó különbözik az írásvédelmi jelszótól. Az írásvédelem korlátozza a módosítást, de nem titkosítja a tartalmat, és nem akadályozza meg a prezentáció betöltését. A prezentációk módosításához használt jelszavak kezeléséről lásd a Write-Protect Presentations.

Az alábbi munkafolyamatok mind a PPT, mind a PPTX prezentációkra vonatkoznak. A példák mindkét formátumot használják, ahol a fájl‑alapú és stream‑alapú viselkedés fontos.

Prezentáció titkosítása nyitó jelszóval

A nyitó jelszó hozzárendeléséhez használd a ProtectionManager.encrypt metódust. Ezután a titkosított prezentáció mentéséhez használd a Presentation.save metódust.

A következő példa titkosít egy PPTX prezentációt:

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

Dokumentumtulajdonságok nyilvános megtartása

Alapértelmezés szerint az Aspose.Slides a dokumentumtulajdonságokat is belevonja a prezentáció titkosításába. A ProtectionManager.setEncryptDocumentProperties metódus ezt a viselkedést a dia‑tartalom titkosításától függetlenül szabályozza. Ha egy indexelő, osztályozó, kereső vagy dokumentumkezelő rendszernek a nyitó jelszó nélkül kell olvasnia a metaadatokat, akkor a ProtectionManager.encrypt hívása előtt add át a False értéket.

A következő példa egy titkosított PPTX prezentációt hoz létre, miközben a beépített dokumentumtulajdonságait nyilvánosként hagyja:

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

A False érték átadása a ProtectionManager.setEncryptDocumentProperties metódusnak nem teszi nyilvánossá a diákat, master‑diákat, elrendezéseket, alakzatokat, médiát vagy a prezentáció egyéb tartalmát. Csak a dokumentumtulajdonságokra van hatással. A titkosított tartalom betöltése nélkül történő olvasáshoz lásd a Manage Presentation Properties.

Titkosított prezentáció betöltése

Állítsd a LoadOptions.setPassword értékét a nyitó jelszóra, és a fájl betöltésekor add át a beállításokat a Presentation konstruktorának. A betöltés sikertelen, ha nyitó jelszó szükséges, de a megadott jelszó hiányzik vagy helytelen.

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:
    # Munka a visszafejtett prezentációval.
    pass
finally:
    presentation.dispose()

Titkosítás eltávolítása egy prezentációból

Töltsd be a prezentációt a nyitó jelszóval, hívd meg a ProtectionManager.removeEncryption metódust, majd mentsd el az eredményt. A mentett prezentáció ezután jelszó nélkül betölthető.

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

Nyitó jelszó ellenőrzése betöltés előtt

A PresentationFactory.getPresentationInfo segítségével szerezz PresentationInfo objektumot anélkül, hogy teljes prezentációpéldányt hoznál létre. Jelszó kérése vagy ellenőrzése előtt ellenőrizd a PresentationInfo.isPasswordProtected állapotát. Ha védelem van, a megadott értéket a PresentationInfo.checkPassword metódussal ellenőrizd.

Fájlútvonal munkafolyamat

A következő példa ellenőrzi egy PPTX fájl nyitó jelszavát, átadja az ellenőrzött értéket a LoadOptions.setPassword metódusnak, majd betölti a teljes prezentációt:

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 munkafolyamat

A PresentationFactory.getPresentationInfo stream‑túlterhelése ugyanazt a munkafolyamatot biztosítja. A teljes prezentáció stream‑ből való betöltése előtt állítsd vissza egy kereshető stream pozícióját.

A következő példa egy PPT fájlt használ:

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

checkPassword visszatérési értékek

A PresentationInfo.checkPassword True értéket ad csak akkor, ha a prezentációnak nyitó jelszava van, és a megadott jelszó helyes. False értéket ad az alábbi esetekben:

  • A jelszó helytelen.
  • A prezentációnak nincs nyitó jelszava.
  • A megadott jelszó None vagy üres.

A viselkedés ugyanaz PPT és PPTX prezentációk esetén.

Ellenőrizd, hogy a betöltött prezentáció titkosított-e

A megfelelő jelszóval betöltött prezentáció után vizsgáld meg a ProtectionManager.isEncrypted állapotát, hogy megerősítsd, a forrás prezentáció titkosított volt. A nyitó jelszó védelem betöltés előtti észleléséhez használd a fent bemutatott PresentationInfo.isPasswordProtected metódust.

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

Biztonsági ajánlások

Prezentáció jelszóval való védelme online

  1. Nyisd meg az Aspose.Slides Lock alkalmazást.
  2. Válaszd ki vagy töltsd fel a prezentációt.
  3. Adj meg egy jelszót a megtekintés védelméhez.
  4. Opcionálisan adj meg egy külön jelszót a szerkesztési védelemhez.
  5. Alkalmazd a védelmet, és töltsd le a keletkezett fájlt.

GYIK

Mi a különbség a nyitó jelszó és az írásvédelmi jelszó között?

A nyitó jelszó titkosítja a prezentációt, és szükséges a tartalom betöltéséhez. Az írásvédelmi jelszó a módosítást korlátozza anélkül, hogy titkosítaná a tartalmat.

Ellenőrizhetem a nyitó jelszót anélkül, hogy az összes diát betölteném?

Igen. Szerezd meg a prezentáció információit, ellenőrizd, hogy nyitó jelszó védelem jelen van‑e, és validáld a jelszót a teljes prezentációpéldány létrehozása előtt.

Olvashat egy alkalmazás metaadatokat nyitó jelszó nélkül?

Igen, de csak akkor, ha a prezentációt a dokumentumtulajdonságok titkosítása letiltásával titkosították. Ebben az esetben az alkalmazásnak a Manage Presentation Properties leírásában szereplő dokumentumtulajdonságokra korlátozott betöltési módot kell használnia.

Támogatja a jelszó‑ellenőrzési munkafolyamat a PPT és PPTX formátumokat is?

Igen. A fájlútvonal és stream alapú jelszódetektálás és ellenőrzés egyformán működik PPT és PPTX prezentációk esetén.