Präsentationen mit Passwortschutz in Java

Übersicht

Ein Öffnungskennwort verschlüsselt eine Präsentation. Das korrekte Kennwort ist erforderlich, um den Präsentationsinhalt zu laden und anzuzeigen, sodass dieser Schutz Vertraulichkeit gewährleistet.

Ein Öffnungskennwort unterscheidet sich von einem Schreibschutzkennwort. Schreibschutz beschränkt die Änderung, verschlüsselt jedoch nicht den Inhalt und verhindert nicht das Laden der Präsentation. Um Kennwörter für die Modifikation von Präsentationen zu verwalten, siehe Präsentationen schreibschützen.

Die nachstehenden Workflows gelten sowohl für PPT‑ als auch für PPTX‑Präsentationen. Die Beispiele verwenden beide Formate, wo ihr verhaltensabhängiges Datei‑ und Stream‑Verhalten wichtig ist.

Verschlüsseln einer Präsentation mit einem Öffnungskennwort

Verwenden Sie IProtectionManager.encrypt, um ein Öffnungskennwort zuzuweisen. Anschließend speichern Sie die verschlüsselte Präsentation mit IPresentation.save.

Das folgende Beispiel verschlüsselt eine PPTX‑Präsentation:

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

Presentation presentation = new Presentation("pres.pptx");
try {
    presentation.getProtectionManager().encrypt("open_password");
    presentation.save("encrypted-pres.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dokumenteigenschaften öffentlich lassen

Standardmäßig beinhaltet Aspose.Slides Dokumenteigenschaften in die Präsentationsverschlüsselung. Die Methode IProtectionManager.setEncryptDocumentProperties steuert dieses Verhalten unabhängig von der Folien‑Inhaltsverschlüsselung. Setzen Sie false, bevor Sie IProtectionManager.encrypt aufrufen, wenn ein Indexierungs‑, Klassifikations‑, Such‑ oder Dokument‑Management‑System Metadaten ohne das Öffnungskennwort lesen muss.

Das folgende Beispiel erstellt eine verschlüsselte PPTX‑Präsentation, lässt dabei jedoch ihre eingebauten Dokumenteigenschaften öffentlich:

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

Presentation presentation = new Presentation();
try {
    IDocumentProperties 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();
}

Das Setzen von false bei IProtectionManager.setEncryptDocumentProperties macht Folien, Vorlagen, Layouts, Formen, Medien oder andere Präsentationsinhalte nicht öffentlich. Es betrifft ausschließlich die Dokumenteigenschaften. Um diese Eigenschaften ohne Laden des verschlüsselten Inhalts zu lesen, siehe Präsentations‑eigenschaften verwalten.

Verschlüsselte Präsentation laden

Setzen Sie ILoadOptions.setPassword auf das Öffnungskennwort und übergeben Sie die Optionen beim Laden der Datei an Presentation. Das Laden schlägt fehl, wenn ein Öffnungskennwort erforderlich ist, das angegebene Kennwort jedoch fehlt oder falsch ist.

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    // Arbeiten Sie mit der entschlüsselten Präsentation.
} finally {
    presentation.dispose();
}

Verschlüsselung einer Präsentation entfernen

Laden Sie die Präsentation mit ihrem Öffnungskennwort, rufen Sie IProtectionManager.removeEncryption auf und speichern Sie das Ergebnis. Die gespeicherte Präsentation kann danach ohne Kennwort geladen werden.

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

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    presentation.getProtectionManager().removeEncryption();
    presentation.save("encryption-removed.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Öffnungskennwort vor dem Laden prüfen

Verwenden Sie IPresentationFactory.getPresentationInfo, um IPresentationInfo zu erhalten, ohne eine vollständige Präsentationsinstanz zu erzeugen. Prüfen Sie IPresentationInfo.isPasswordProtected bevor Sie ein Kennwort anfordern oder prüfen. Ist ein Schutz vorhanden, validieren Sie den angegebenen Wert mit IPresentationInfo.checkPassword.

Dateipfad-Workflow

Das folgende Beispiel prüft ein Öffnungskennwort für eine PPTX‑Datei, übergibt den validierten Wert an ILoadOptions.setPassword, und lädt anschließend die vollständige Präsentation:

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;

String filePath = "protected-presentation.pptx";
String password = "open_password";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);

if (!presentationInfo.isPasswordProtected()) {
    System.out.println("The presentation does not have an opening password.");
} else if (!presentationInfo.checkPassword(password)) {
    System.out.println("The opening password is incorrect.");
} else {
    LoadOptions loadOptions = new LoadOptions();
    loadOptions.setPassword(password);

    Presentation presentation = new Presentation(filePath, loadOptions);
    try {
        System.out.println("The presentation was validated and loaded successfully.");
    } finally {
        presentation.dispose();
    }
}

Stream-Workflow

Die Stream‑Überladung von IPresentationFactory.getPresentationInfo bietet denselben Workflow. Setzen Sie die Position eines seek‑fähigen Streams zurück, bevor Sie die vollständige Präsentation aus diesem Stream laden.

Das folgende Beispiel verwendet eine PPT‑Datei:

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;
import java.io.FileInputStream;

String password = "open_password";

FileInputStream presentationStream = new FileInputStream("protected-presentation.ppt");
try {
    IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(presentationStream);

    if (!presentationInfo.isPasswordProtected()) {
        System.out.println("The presentation does not have an opening password.");
    } else if (!presentationInfo.checkPassword(password)) {
        System.out.println("The opening password is incorrect.");
    } else {
        presentationStream.getChannel().position(0);

        LoadOptions loadOptions = new LoadOptions();
        loadOptions.setPassword(password);

        Presentation presentation = new Presentation(presentationStream, loadOptions);
        try {
            System.out.println("The presentation was validated and loaded successfully.");
        } finally {
            presentation.dispose();
        }
    }
} finally {
    presentationStream.close();
}

Rückgabewerte von checkPassword

IPresentationInfo.checkPassword gibt true zurück, nur wenn die Präsentation ein Öffnungskennwort besitzt und das angegebene Kennwort korrekt ist. Es gibt false in den folgenden Fällen zurück:

  • Das Kennwort ist falsch.
  • Die Präsentation besitzt kein Öffnungskennwort.
  • Das angegebene Kennwort ist null oder leer.

Das Verhalten ist für PPT‑ und PPTX‑Präsentationen identisch.

Überprüfen, ob eine geladene Präsentation verschlüsselt ist

Nach dem Laden einer Präsentation mit dem korrekten Kennwort prüfen Sie IProtectionManager.isEncrypted, um zu bestätigen, dass die Quellpräsentation verschlüsselt war. Um den Schutz durch ein Öffnungskennwort vor dem Laden zu erkennen, verwenden Sie IPresentationInfo.isPasswordProtected wie oben gezeigt.

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    boolean isEncrypted = presentation.getProtectionManager().isEncrypted();
    System.out.println("The presentation is encrypted: " + isEncrypted);
} finally {
    presentation.dispose();
}

Sicherheits‑Empfehlungen

Präsentation online mit Kennwort schützen

  1. Öffnen Sie die Anwendung Aspose.Slides Lock.
  2. Wählen Sie die Präsentation aus oder laden Sie sie hoch.
  3. Geben Sie ein Kennwort für den Ansichtsschutz ein.
  4. Geben Sie optional ein separates Kennwort für den Bearbeitungsschutz ein.
  5. Wenden Sie den Schutz an und laden Sie die resultierende Datei herunter.

FAQ

Was ist der Unterschied zwischen einem Öffnungskennwort und einem Schreibschutzkennwort?

Ein Öffnungskennwort verschlüsselt die Präsentation und ist zum Laden ihres Inhalts erforderlich. Ein Schreibschutzkennwort beschränkt die Änderung, ohne den Inhalt zu verschlüsseln.

Kann ich ein Öffnungskennwort prüfen, ohne alle Folien zu laden?

Ja. Erhalten Sie Präsentationsinformationen, prüfen Sie, ob ein Öffnungskennwortschutz vorhanden ist, und validieren Sie das Kennwort, bevor Sie eine vollständige Präsentationsinstanz erzeugen.

Kann eine Anwendung Metadaten ohne das Öffnungskennwort lesen?

Ja, jedoch nur, wenn die Präsentation mit deaktivierter Dokument‑Eigenschafts‑Verschlüsselung verschlüsselt wurde. Die Anwendung muss dann den ausschließlich‑für‑Dokument‑Eigenschaften‑Lademodus verwenden, der in Präsentations‑eigenschaften verwalten beschrieben ist.

Unterstützen die Kennwort‑Prüf‑Workflows sowohl PPT als auch PPTX?

Ja. Dateipfad‑ und Stream‑basierte Kennwort‑Erkennung und -Validierung verhalten sich für PPT‑ und PPTX‑Präsentationen identisch.