Prezentace chráněné heslem v Pythonu

Přehled

Otevírací heslo šifruje prezentaci. Správné heslo je vyžadováno pro načtení a zobrazení obsahu prezentace, takže tato ochrana poskytuje důvěrnost.

Otevírací heslo se liší od hesla pro ochranu proti zápisu. Ochrana proti zápisu omezuje úpravy, ale nešifruje obsah ani nebrání načtení prezentace. Pro správu hesel pro úpravu prezentací viz Write-Protect Presentations.

Níže uvedené postupy platí pro prezentace PPT i PPTX. Příklady používají oba formáty, kde je důležité chování na souborech i streamových operacích.

Šifrování prezentace otevíracím heslem

Použijte ProtectionManager.encrypt k přiřazení otevíracího hesla. Pak použijte Presentation.save k uložení šifrované prezentace.

Následující příklad šifruje PPTX prezentaci:

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    presentation.protection_manager.encrypt("open_password")
    presentation.save("encrypted-pres.pptx", slides.export.SaveFormat.PPTX)

Zveřejnění vlastností dokumentu

Ve výchozím nastavení zahrnuje Aspose.Slides vlastnosti dokumentu do šifrování prezentace. Vlastnost ProtectionManager.encrypt_document_properties řídí toto chování nezávisle na šifrování obsahu snímků. Nastavte ji na False před voláním ProtectionManager.encrypt v případě, že systém indexování, klasifikace, vyhledávání nebo správy dokumentů potřebuje číst metadata bez otevíracího hesla.

Následující příklad vytvoří šifrovanou PPTX prezentaci a zároveň ponechá vestavěné vlastnosti dokumentu veřejné:

import aspose.slides as slides

with slides.Presentation() as presentation:
    properties = presentation.document_properties
    properties.author = "Contoso Knowledge Management"
    properties.title = "Quarterly Product Roadmap"
    properties.keywords = "roadmap, planning, internal"

    presentation.slides[0].name = "Encrypted presentation content"
    presentation.protection_manager.encrypt_document_properties = False
    presentation.protection_manager.encrypt("open_password")
    presentation.save("public-properties-encrypted.pptx", slides.export.SaveFormat.PPTX)

Nastavení encrypt_document_properties na False nezpřístupní snímky, mistrovské snímky, rozvržení, tvary, média ani jiný obsah prezentace. Ovlivní pouze vlastnosti dokumentu. Pro čtení těchto vlastností bez načítání šifrovaného obsahu viz Manage Presentation Properties.

Načtení šifrované prezentace

Nastavte LoadOptions.password na otevírací heslo a předávejte možnosti při volání Presentation při načítání souboru. Načtení selže, pokud je požadováno otevírací heslo, ale zadané heslo chybí nebo je nesprávné.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    # Pracujte s dešifrovanou prezentací.
    pass

Odstranění šifrování z prezentace

Načtěte prezentaci s jejím otevíracím heslem, zavolejte ProtectionManager.remove_encryption a výsledek uložte. Uložená prezentace pak může být načtena bez hesla.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    presentation.protection_manager.remove_encryption()
    presentation.save("encryption-removed.pptx", slides.export.SaveFormat.PPTX)

Ověření otevíracího hesla před načtením

Použijte PresentationFactory.get_presentation_info k získání PresentationInfo bez vytváření úplné instance prezentace. Zkontrolujte PresentationInfo.is_password_protected před požádáním o heslo nebo jeho ověřením. Pokud je ochrana přítomna, ověřte zadanou hodnotu pomocí PresentationInfo.check_password.

Postup s cestou k souboru

Následující příklad ověří otevírací heslo pro PPTX soubor, předá ověřenou hodnotu do LoadOptions.password a poté načte úplnou prezentaci:

import aspose.slides as slides

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)

if not presentation_info.is_password_protected:
    print("The presentation does not have an opening password.")
elif not presentation_info.check_password(password):
    print("The opening password is incorrect.")
else:
    load_options = slides.LoadOptions()
    load_options.password = password

    with slides.Presentation(file_path, load_options) as presentation:
        print("The presentation was validated and loaded successfully.")

Postup se streamem

Přetížení streamu metody PresentationFactory.get_presentation_info poskytuje stejný postup. Před načtením úplné prezentace ze streamu nastavte pozici vyhledávaného streamu na začátek.

Následující příklad používá PPT soubor:

import aspose.slides as slides

password = "open_password"

with open("protected-presentation.ppt", "rb") as presentation_stream:
    presentation_info = slides.PresentationFactory.instance.get_presentation_info(presentation_stream)

    if not presentation_info.is_password_protected:
        print("The presentation does not have an opening password.")
    elif not presentation_info.check_password(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.seek(0)
        load_options = slides.LoadOptions()
        load_options.password = password

        with slides.Presentation(presentation_stream, load_options) as presentation:
            print("The presentation was validated and loaded successfully.")

Návratové hodnoty CheckPassword

PresentationInfo.check_password vrací True pouze tehdy, když má prezentace otevírací heslo a zadané heslo je správné. Vrací False v následujících případech:

  • Heslo je nesprávné.
  • Prezentace nemá otevírací heslo.
  • Zadané heslo je None nebo prázdné.

Chování je stejné pro PPT i PPTX prezentace.

Kontrola, zda je načtená prezentace šifrována

Po načtení prezentace se správným heslem zkontrolujte ProtectionManager.is_encrypted k potvrzení, že původní prezentace byla šifrována. Pro detekci ochrany otevíracím heslem před načtením použijte PresentationInfo.is_password_protected podle výše uvedeného postupu.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    is_encrypted = presentation.protection_manager.is_encrypted
    print("The presentation is encrypted: " + str(is_encrypted))

Doporučení pro zabezpečení

Šifrování prezentace online

  1. Otevřete aplikaci Aspose.Slides Lock.
  2. Vyberte nebo nahrajte prezentaci.
  3. Zadejte heslo pro ochranu zobrazení.
  4. Volitelně zadejte samostatné heslo pro ochranu úprav.
  5. Použijte ochranu a stáhněte výsledný soubor.

Často kladené otázky

Jaký je rozdíl mezi otevíracím heslem a heslem pro ochranu proti zápisu?

Otevírací heslo šifruje prezentaci a je vyžadováno pro načtení jejího obsahu. Heslo pro ochranu proti zápisu omezuje úpravy bez šifrování obsahu.

Mohu ověřit otevírací heslo bez načtení všech snímků?

Ano. Získejte informace o prezentaci, zkontrolujte, zda je přítomna ochrana otevíracím heslem, a ověřte heslo před vytvořením úplné instance prezentace.

Může aplikace číst metadata bez otevíracího hesla?

Ano, ale jen pokud byla prezentace šifrována s nastavením encrypt_document_properties na False. Aplikace pak musí použít režim načítání jen vlastností dokumentu popsaný v Manage Presentation Properties.

Podporují pracovní postupy kontroly hesla jak PPT, tak PPTX?

Ano. Detekce a ověření hesla na základě cesty k souboru i streamu se chovají stejným způsobem pro PPT i PPTX prezentace.