Zabezpieczanie prezentacji przed zapisem w Pythonie

Wprowadzenie

Hasło ochrony przed zapisem ogranicza modyfikację prezentacji, ale nie szyfruje jej treści. Użytkownicy mogą ładować i przeglądać prezentację zabezpieczoną przed zapisem bez hasła. W zależności od aplikacji mogą również edytować zawartość i zapisać ją pod inną nazwą, dlatego ochrona przed zapisem nie powinna być traktowana jako mechanizm poufności.

Hasło otwierające pełni inną funkcję: szyfruje prezentację i jest wymagane do załadowania jej treści. Aby zaszyfrować prezentację lub zweryfikować hasło otwierające, zobacz Password-Protect Presentations.

Procedury opisane w tym artykule mają zastosowanie zarówno do prezentacji PPT, jak i PPTX. Przykłady używają plików PPTX; przy zapisie jako PPT użyj rozszerzenia .ppt i odpowiedniego formatu zapisu PPT.

Ustaw ochronę przed zapisem w prezentacji

Użyj ProtectionManager.set_write_protection, aby przypisać hasło umożliwiające modyfikację prezentacji. Zapisanie prezentacji utrwala ustawienie ochrony.

Poniższy przykład ustawia ochronę przed zapisem w prezentacji PPTX:

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    presentation.protection_manager.set_write_protection("modify_password")
    presentation.save("write-protected-pres.pptx", slides.export.SaveFormat.PPTX)

Załaduj prezentację zabezpieczoną przed zapisem

Ponieważ ochrona przed zapisem nie szyfruje treści prezentacji, nie jest wymagane żadne hasło do załadowania prezentacji. Hasło jest istotne jedynie przy weryfikacji uprawnienia do modyfikacji zabezpieczonej prezentacji.

import aspose.slides as slides

with slides.Presentation("write-protected-pres.pptx") as presentation:
    print("Slide count: " + str(len(presentation.slides)))

Nie przekazuj hasła ochrony przed zapisem do LoadOptions.password. Właściwość ta przyjmuje hasło otwierające dla zaszyfrowanej treści. Jeśli prezentacja posiada oba typy ochrony, podaj hasło otwierające, aby ją załadować, a hasło ochrony przed zapisem obsłuż osobno.

Usuń ochronę przed zapisem w prezentacji

Użyj ProtectionManager.remove_write_protection, aby usunąć ograniczenie modyfikacji, a następnie zapisz prezentację.

import aspose.slides as slides

with slides.Presentation("write-protected-pres.pptx") as presentation:
    presentation.protection_manager.remove_write_protection()
    presentation.save("write-protection-removed.pptx", slides.export.SaveFormat.PPTX)

Sprawdź, czy prezentacja jest zabezpieczona przed zapisem

Aby przejrzeć plik bez tworzenia pełnego obiektu Presentation, wywołaj PresentationFactory.get_presentation_info i sprawdź PresentationInfo.is_write_protected. Właściwość wykorzystuje NullableBool i zwraca NullableBool.TRUE, gdy wykryto ochronę przed zapisem.

import aspose.slides as slides

presentation_info = slides.PresentationFactory.instance.get_presentation_info("write-protected-pres.pptx")

if presentation_info.is_write_protected == slides.NullableBool.TRUE:
    print("The presentation is write protected.")
else:
    print("Write protection was not detected.")

Przeciążenie metodą strumienia PresentationFactory.get_presentation_info dostarcza tych samych informacji dla prezentacji podanej jako strumień.

Zweryfikuj hasło ochrony przed zapisem

Użyj PresentationInfo.check_write_protection, aby zweryfikować hasło modyfikacji bez ładowania pełnej prezentacji. Najpierw sprawdź PresentationInfo.is_write_protected, aby aplikacja żądała lub weryfikowała hasło tylko wtedy, gdy istnieje ochrona przed zapisem.

import aspose.slides as slides

presentation_info = slides.PresentationFactory.instance.get_presentation_info("write-protected-pres.pptx")

if presentation_info.is_write_protected != slides.NullableBool.TRUE:
    print("The presentation is not write protected.")
elif presentation_info.check_write_protection("modify_password"):
    print("The write-protection password is correct.")
else:
    print("The write-protection password is incorrect.")

PresentationInfo.check_write_protection weryfikuje wyłącznie hasło ochrony przed zapisem. Nie weryfikuje hasła otwierającego ani nie określa, czy zaszyfrowana treść może zostać załadowana. Z kolei PresentationInfo.check_password weryfikuje jedynie hasło otwierające. Jeśli pełna prezentacja została już załadowana, ProtectionManager.check_write_protection zapewnia równoważną kontrolę ochrony przed zapisem poprzez menedżera ochrony.

W aplikacjach produkcyjnych nie loguj haseł ani nie umieszczaj ich w komunikatach diagnostycznych. Unikaj niepotrzebnych, powtarzalnych prób weryfikacji i przechowuj hasła w pamięci tylko tak długo, jak jest to niezbędne.

FAQ

Czy ochrona przed zapisem szyfruje prezentację?

Nie. Ogranicza modyfikację, ale pozostawia treść prezentacji dostępną do załadowania i przeglądania.

Czy hasło ochrony przed zapisem jest wymagane do otwarcia prezentacji?

Nie. Do załadowania zaszyfrowanej treści prezentacji wymagane jest jedynie hasło otwierające.

Czy prezentacja może mieć jednocześnie hasło otwierające i hasło ochrony przed zapisem?

Tak. Dostarcz hasło otwierające za pośrednictwem opcji ładowania, aby otworzyć zaszyfrowaną prezentację, oraz osobno zweryfikuj hasło ochrony przed zapisem, gdy wymagane jest zezwolenie na modyfikację.