Schreibschutz für Präsentationen in Java

Einleitung

Ein Schreibschutz-Passwort schränkt die Änderung einer Präsentation ein, verschlüsselt jedoch nicht deren Inhalt. Benutzer können eine schreibgeschützte Präsentation ohne Passwort laden und anzeigen. Je nach Anwendung können sie den Inhalt außerdem bearbeiten und unter einem anderen Namen speichern, daher sollte Schreibschutz nicht als Vertraulichkeitsmechanismus betrachtet werden.

Ein Öffnungs­passwort hat einen anderen Zweck: Es verschlüsselt die Präsentation und muss zum Laden des Inhalts angegeben werden. Zum Verschlüsseln einer Präsentation oder zum Validieren eines Öffnungs­passworts siehe Password-Protect Presentations.

Die in diesem Artikel beschriebenen Arbeitsabläufe gelten sowohl für PPT‑ als auch für PPTX‑Präsentationen. Die Beispiele verwenden PPTX‑Dateien; beim Speichern im PPT‑Format verwenden Sie die Erweiterung .ppt und das entsprechende PPT‑Speicherformat.

Schreibschutz für eine Präsentation festlegen

Verwenden Sie IProtectionManager.setWriteProtection, um ein Passwort für die Änderung einer Präsentation zuzuweisen. Das Speichern der Präsentation bewahrt die Schutz‑Einstellung.

Das folgende Beispiel legt Schreibschutz für eine PPTX‑Präsentation fest:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("pres.pptx");
try {
    presentation.getProtectionManager().setWriteProtection("modify_password");
    presentation.save("write-protected-pres.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Eine schreibgeschützte Präsentation laden

Da Schreibschutz den Präsentationsinhalt nicht verschlüsselt, ist kein Passwort zum Laden der Präsentation erforderlich. Das Passwort ist nur relevant, wenn die Berechtigung zum Ändern der geschützten Präsentation geprüft wird.

import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("write-protected-pres.pptx");
try {
    System.out.println("Slide count: " + presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Übergeben Sie kein Schreibschutz‑Passwort an ILoadOptions.setPassword. Diese Methode akzeptiert ein Öffnungs­passwort für verschlüsselten Inhalt. Wenn eine Präsentation beide Schutzarten besitzt, geben Sie das Öffnungs­passwort zum Laden an und behandeln Sie das Schreibschutz‑Passwort separat.

Schreibschutz von einer Präsentation entfernen

Verwenden Sie IProtectionManager.removeWriteProtection zum Entfernen der Änderungsbeschränkung und speichern Sie anschließend die Präsentation.

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("write-protected-pres.pptx");
try {
    presentation.getProtectionManager().removeWriteProtection();
    presentation.save("write-protection-removed.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Prüfen, ob eine Präsentation schreibgeschützt ist

Um eine Datei zu untersuchen, ohne eine vollständige Presentation‑Instanz zu erstellen, rufen Sie IPresentationFactory.getPresentationInfo auf und prüfen Sie IPresentationInfo.isWriteProtected. Die Methode verwendet NullableBool und liefert NullableBool.True, wenn Schreibschutz erkannt wird.

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.NullableBool;
import com.aspose.slides.PresentationFactory;

IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx");

if (presentationInfo.isWriteProtected() == NullableBool.True) {
    System.out.println("The presentation is write protected.");
} else {
    System.out.println("Write protection was not detected.");
}

Die Stream‑Überladung von IPresentationFactory.getPresentationInfo liefert dieselben Informationen für eine als Stream bereitgestellte Präsentation.

Validierung eines Schreibschutz‑Passworts

Verwenden Sie IPresentationInfo.checkWriteProtection, um ein Änderungs‑Passwort zu prüfen, ohne die gesamte Präsentation zu laden. Prüfen Sie zuerst IPresentationInfo.isWriteProtected, damit die Anwendung nur dann ein Passwort anfordert oder validiert, wenn Schreibschutz vorhanden ist.

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.NullableBool;
import com.aspose.slides.PresentationFactory;

IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx");

if (presentationInfo.isWriteProtected() != NullableBool.True) {
    System.out.println("The presentation is not write protected.");
} else if (presentationInfo.checkWriteProtection("modify_password")) {
    System.out.println("The write-protection password is correct.");
} else {
    System.out.println("The write-protection password is incorrect.");
}

IPresentationInfo.checkWriteProtection prüft ausschließlich das Schreibschutz‑Passwort. Es validiert weder ein Öffnungs­passwort noch bestimmt es, ob verschlüsselter Inhalt geladen werden kann. Im Gegenzug prüft IPresentationInfo.checkPassword nur ein Öffnungs­passwort. Wenn bereits eine vollständige Präsentation geladen wurde, bietet IProtectionManager.checkWriteProtection die äquivalente Schreibschutz‑Prüfung über dessen Schutz‑Manager.

In Produktionsanwendungen sollten Passwörter nicht protokolliert oder in Diagnosemeldungen eingefügt werden. Vermeiden Sie unnötige wiederholte Validierungsversuche und behalten Sie Passwörter im Speicher nur so lange, wie sie benötigt werden.

FAQ

Verschlüsselt Schreibschutz eine Präsentation?

Nein. Er schränkt die Änderung ein, lässt jedoch den Präsentationsinhalt zum Laden und Anzeigen verfügbar.

Ist das Schreibschutz‑Passwort zum Öffnen einer Präsentation erforderlich?

Nein. Zum Laden verschlüsselter Präsentationsinhalte ist ausschließlich ein Öffnungs­passwort erforderlich.

Kann eine Präsentation sowohl ein Öffnungs­passwort als auch ein Schreibschutz‑Passwort haben?

Ja. Geben Sie das Öffnungs­passwort über die Ladeoptionen an, um die verschlüsselte Präsentation zu öffnen, und validieren Sie das Schreibschutz‑Passwort separat, wenn eine Änderungs­berechtigung erforderlich ist.