Zabezpieczanie prezentacji hasłem w JavaScript

Przegląd

Hasło otwierające szyfruje prezentację. Prawidłowe hasło jest wymagane do załadowania i wyświetlenia zawartości prezentacji, dzięki czemu ochrona zapewnia poufność.

Hasło otwierające różni się od hasła zabezpieczającego przed zapisem. Zabezpieczenie przed zapisem ogranicza modyfikację, ale nie szyfruje treści ani nie uniemożliwia załadowania prezentacji. Aby zarządzać hasłami umożliwiającymi modyfikację prezentacji, zobacz Write‑Protect Presentations.

Poniższe scenariusze dotyczą zarówno prezentacji PPT, jak i PPTX. Przykłady używają obu formatów, gdzie istotne jest zachowanie oparte na plikach i strumieniach.

Zaszyfruj prezentację hasłem otwierającym

Użyj ProtectionManager.encrypt, aby przypisać hasło otwierające. Następnie użyj Presentation.save, aby zapisać zaszyfrowaną prezentację.

Poniższy przykład szyfruje prezentację PPTX:

const slides = require("aspose.slides.via.java");

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

Utrzymaj właściwości dokumentu publiczne

Domyślnie Aspose.Slides uwzględnia właściwości dokumentu w szyfrowaniu prezentacji. Metoda ProtectionManager.setEncryptDocumentProperties steruje tym zachowaniem niezależnie od szyfrowania treści slajdów. Przed wywołaniem ProtectionManager.encrypt przekaż false, jeśli system indeksowania, klasyfikacji, wyszukiwania lub zarządzania dokumentami musi odczytać metadane bez hasła otwierającego.

Poniższy przykład tworzy zaszyfrowaną prezentację PPTX, pozostawiając wbudowane właściwości dokumentu publiczne:

const slides = require("aspose.slides.via.java");

const presentation = new slides.Presentation();
try {
    const 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", slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Przekazanie false do ProtectionManager.setEncryptDocumentProperties nie udostępnia slajdów, szablonów, układów, kształtów, mediów ani innej zawartości prezentacji. Dotyczy wyłącznie właściwości dokumentu. Aby odczytać te właściwości bez ładowania zaszyfrowanej treści, zobacz Manage Presentation Properties.

Wczytaj zaszyfrowaną prezentację

Ustaw LoadOptions.setPassword na hasło otwierające i przekaż opcje do Presentation podczas ładowania pliku. Ładowanie kończy się niepowodzeniem, gdy wymagane jest hasło otwierające, a podane hasło jest brakujące lub nieprawidłowe.

const slides = require("aspose.slides.via.java");

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

const presentation = new slides.Presentation("encrypted-pres.pptx", loadOptions);
try {
    // Pracuj z odszyfrowaną prezentacją.
} finally {
    presentation.dispose();
}

Usuń szyfrowanie z prezentacji

Wczytaj prezentację z jej hasłem otwierającym, wywołaj ProtectionManager.removeEncryption i zapisz wynik. Zapisaną prezentację można następnie wczytać bez hasła.

const slides = require("aspose.slides.via.java");

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

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

Sprawdź hasło otwierające przed wczytaniem

Użyj PresentationFactory.getPresentationInfo, aby uzyskać PresentationInfo bez tworzenia pełnej instancji prezentacji. Sprawdź PresentationInfo.isPasswordProtected przed żądaniem lub weryfikacją hasła. Gdy ochrona jest obecna, zweryfikuj podaną wartość przy pomocy PresentationInfo.checkPassword.

Przepływ pracy z ścieżką pliku

Poniższy przykład weryfikuje hasło otwierające dla pliku PPTX, przekazuje zweryfikowaną wartość do LoadOptions.setPassword, a następnie wczytuje pełną prezentację:

const slides = require("aspose.slides.via.java");

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

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

    const presentation = new slides.Presentation(filePath, loadOptions);
    try {
        console.log("The presentation was validated and loaded successfully.");
    } finally {
        presentation.dispose();
    }
}

Przepływ pracy ze strumieniem

Użyj PresentationFactory.getPresentationInfoFromStream, aby zbadać odczytywalny strumień Node.js. Po zakończeniu inspekcji strumień zostaje zużyty, więc przed wczytaniem pełnej prezentacji utwórz nowy strumień i wywołaj Presentation.createPresentationFromStream.

Poniższy przykład używa pliku PPT:

const slides = require("aspose.slides.via.java");
const fs = require("fs");

const filePath = "protected-presentation.ppt";
const password = "open_password";
const presentationFactory = slides.PresentationFactory.getInstance();
const infoStream = fs.createReadStream(filePath);

slides.PresentationFactory.getPresentationInfoFromStream(presentationFactory, infoStream, function(infoError, presentationInfo) {
    if (infoError) {
        console.log("The presentation information could not be read: " + infoError.message);
    } else if (!presentationInfo.isPasswordProtected()) {
        console.log("The presentation does not have an opening password.");
    } else if (!presentationInfo.checkPassword(password)) {
        console.log("The opening password is incorrect.");
    } else {
        const loadOptions = new slides.LoadOptions();
        loadOptions.setPassword(password);
        const presentationStream = fs.createReadStream(filePath);

        slides.Presentation.createPresentationFromStream(presentationStream, loadOptions, function(loadError, presentation) {
            if (loadError) {
                console.log("The presentation could not be loaded: " + loadError.message);
            } else {
                try {
                    console.log("The presentation was validated and loaded successfully.");
                } finally {
                    presentation.dispose();
                }
            }
        });
    }
});

Wartości zwracane przez checkPassword

PresentationInfo.checkPassword zwraca true tylko wtedy, gdy prezentacja posiada hasło otwierające i podane hasło jest prawidłowe. Zwraca false w każdym z poniższych przypadków:

  • Hasło jest niepoprawne.
  • Prezentacja nie ma hasła otwierającego.
  • Podane hasło jest null lub puste.

Zachowanie jest identyczne dla prezentacji PPT i PPTX.

Sprawdź, czy wczytana prezentacja jest szyfrowana

Po wczytaniu prezentacji z prawidłowym hasłem, sprawdź ProtectionManager.isEncrypted, aby potwierdzić, że źródłowa prezentacja była zaszyfrowana. Aby wykryć ochronę hasłem otwierającym przed wczytaniem, użyj PresentationInfo.isPasswordProtected tak, jak pokazano powyżej.

const slides = require("aspose.slides.via.java");

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

const presentation = new slides.Presentation("encrypted-pres.pptx", loadOptions);
try {
    const isEncrypted = presentation.getProtectionManager().isEncrypted();
    console.log("The presentation is encrypted: " + isEncrypted);
} finally {
    presentation.dispose();
}

Zalecenia bezpieczeństwa

Zabezpiecz prezentację hasłem online

  1. Otwórz aplikację Aspose.Slides Lock.
  2. Wybierz lub prześlij prezentację.
  3. Wprowadź hasło zabezpieczające podgląd.
  4. Opcjonalnie wprowadź oddzielne hasło zabezpieczające edycję.
  5. Zastosuj ochronę i pobierz wynikowy plik.

FAQ

Jaka jest różnica między hasłem otwierającym a hasłem zabezpieczającym przed zapisem?

Hasło otwierające szyfruje prezentację i jest wymagane do wczytania jej zawartości. Hasło zabezpieczające przed zapisem ogranicza modyfikację bez szyfrowania treści.

Czy mogę zweryfikować hasło otwierające bez wczytywania wszystkich slajdów?

Tak. Pobierz informacje o prezentacji, sprawdź, czy istnieje ochrona hasłem otwierającym, i zweryfikuj hasło przed utworzeniem pełnej instancji prezentacji.

Czy aplikacja może odczytać metadane bez hasła otwierającego?

Tak, ale tylko wtedy, gdy prezentacja została zaszyfrowana z wyłączonym szyfrowaniem właściwości dokumentu. Aplikacja musi wtedy użyć trybu ładowania obejmującego wyłącznie właściwości dokumentu, opisanego w Manage Presentation Properties.

Czy scenariusze sprawdzania hasła obsługują zarówno PPT, jak i PPTX?

Tak. Wykrywanie i weryfikacja hasła oparte na ścieżce pliku oraz na strumieniu działają identycznie dla prezentacji PPT i PPTX.