Presentazioni protette da scrittura in Python
Introduzione
Una password di protezione da scrittura limita la modifica di una presentazione ma non crittografa il suo contenuto. Gli utenti possono caricare e visualizzare una presentazione protetta da scrittura senza la password. A seconda dell’applicazione, potrebbero anche essere in grado di modificare il contenuto e salvarlo con un nome diverso, quindi la protezione da scrittura non deve essere considerata un meccanismo di riservatezza.
Una password di apertura ha uno scopo diverso: crittografa la presentazione ed è necessaria per caricare il suo contenuto. Per crittografare una presentazione o convalidare una password di apertura, vedere Presentazioni protette da password.
I flussi di lavoro in questo articolo si applicano sia alle presentazioni PPT che PPTX. Gli esempi utilizzano file PPTX; quando si salva in PPT, utilizzare l’estensione .ppt e il formato di salvataggio PPT corrispondente.
Imposta protezione da scrittura su una presentazione
Utilizza ProtectionManager.setWriteProtection per assegnare una password per modificare una presentazione. Il salvataggio della presentazione mantiene l’impostazione di protezione.
Il seguente esempio imposta la protezione da scrittura su una presentazione PPTX:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("pres.pptx")
try:
presentation.getProtectionManager().setWriteProtection("modify_password")
presentation.save("write-protected-pres.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Carica una presentazione protetta da scrittura
Poiché la protezione da scrittura non crittografa il contenuto della presentazione, non è necessaria alcuna password per caricare la presentazione. La password è rilevante solo quando si convalida l’autorizzazione a modificare la presentazione protetta.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("write-protected-pres.pptx")
try:
print("Slide count: " + str(presentation.getSlides().size()))
finally:
presentation.dispose()
Non passare una password di protezione da scrittura a LoadOptions.setPassword. Quel metodo accetta una password di apertura per contenuti crittografati. Se una presentazione ha entrambi i tipi di protezione, fornire la password di apertura per caricarla e gestire separatamente la password di protezione da scrittura.
Rimuovi la protezione da scrittura da una presentazione
Utilizza ProtectionManager.removeWriteProtection per rimuovere la restrizione di modifica, quindi salva la presentazione.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("write-protected-pres.pptx")
try:
presentation.getProtectionManager().removeWriteProtection()
presentation.save("write-protection-removed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Verifica se una presentazione è protetta da scrittura
Per esaminare un file senza creare un’istanza completa di Presentation, chiama PresentationFactory.getPresentationInfo e controlla PresentationInfo.isWriteProtected. Il metodo utilizza NullableBool e restituisce NullableBool.True_ quando viene rilevata la protezione da scrittura.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import NullableBool, PresentationFactory
presentation_info = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx")
if presentation_info.isWriteProtected() == NullableBool.True_:
print("The presentation is write protected.")
else:
print("Write protection was not detected.")
La variante di flusso di PresentationFactory.getPresentationInfo fornisce le stesse informazioni per una presentazione fornita come stream.
Convalida una password di protezione da scrittura
Utilizza PresentationInfo.checkWriteProtection per convalidare una password di modifica senza caricare l’intera presentazione. Controlla prima PresentationInfo.isWriteProtected in modo che l’applicazione richieda o convalidi una password solo quando è presente la protezione da scrittura.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import NullableBool, PresentationFactory
presentation_info = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx")
if presentation_info.isWriteProtected() != NullableBool.True_:
print("The presentation is not write protected.")
elif presentation_info.checkWriteProtection("modify_password"):
print("The write-protection password is correct.")
else:
print("The write-protection password is incorrect.")
PresentationInfo.checkWriteProtection convalida solo la password di protezione da scrittura. Non convalida una password di apertura né determina se il contenuto crittografato può essere caricato. Al contrario, PresentationInfo.checkPassword convalida solo una password di apertura. Se una presentazione completa è già stata caricata, ProtectionManager.checkWriteProtection fornisce il corrispondente controllo di protezione da scrittura tramite il suo gestore di protezione.
Nelle applicazioni di produzione, non registrare le password né includerle nei messaggi diagnostici. Evita tentativi di convalida ripetuti inutili e conserva le password in memoria solo per il tempo necessario.
FAQ
La protezione da scrittura cripta una presentazione?
No. Limita la modifica ma lascia il contenuto della presentazione disponibile per il caricamento e la visualizzazione.
La password di protezione da scrittura è necessaria per aprire una presentazione?
No. È necessaria solo una password di apertura per caricare il contenuto crittografato della presentazione.
Una presentazione può avere sia una password di apertura sia una password di protezione da scrittura?
Sì. Fornisci la password di apertura tramite le opzioni di caricamento per aprire la presentazione crittografata e convalida separatamente la password di protezione da scrittura quando è necessaria l’autorizzazione alla modifica.