Proteksi Presentasi dengan Kata Sandi di JavaScript

Gambaran Umum

Kata sandi pembuka mengenkripsi presentasi. Kata sandi yang benar diperlukan untuk memuat dan melihat konten presentasi, sehingga perlindungan ini memberikan kerahasiaan.

Kata sandi pembuka berbeda dari kata sandi proteksi penulisan. Proteksi penulisan membatasi modifikasi tetapi tidak mengenkripsi konten atau mencegah presentasi dimuat. Untuk mengelola kata sandi untuk memodifikasi presentasi, lihat Lindungi Presentasi dengan Penulisan.

Alur kerja di bawah ini berlaku untuk presentasi PPT dan PPTX. Contoh menggunakan kedua format di mana perilaku berbasis file dan aliran penting.

Enkripsi Presentasi dengan Kata Sandi Pembuka

Gunakan ProtectionManager.encrypt untuk menetapkan kata sandi pembuka. Kemudian gunakan Presentation.save untuk menyimpan presentasi terenkripsi.

Contoh berikut mengenkripsi presentasi 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();
}

Biarkan Properti Dokumen Publik

Secara default, Aspose.Slides menyertakan properti dokumen dalam enkripsi presentasi. Metode ProtectionManager.setEncryptDocumentProperties mengontrol perilaku ini secara terpisah dari enkripsi konten slide. Berikan false sebelum memanggil ProtectionManager.encrypt ketika sistem pengindeksan, klasifikasi, pencarian, atau manajemen dokumen harus membaca metadata tanpa kata sandi pembuka.

Contoh berikut membuat presentasi PPTX terenkripsi sambil membiarkan properti dokumen bawaannya publik:

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();
}

Memberikan false ke ProtectionManager.setEncryptDocumentProperties tidak menjadikan slide, master, tata letak, bentuk, media, atau konten presentasi lainnya publik. Ini hanya memengaruhi properti dokumen. Untuk membaca properti tersebut tanpa memuat konten terenkripsi, lihat Kelola Properti Presentasi.

Muat Presentasi yang Terenkripsi

Setel LoadOptions.setPassword ke kata sandi pembuka dan berikan opsi tersebut ke Presentation saat memuat file. Pemuatan gagal ketika kata sandi pembuka diperlukan tetapi kata sandi yang diberikan hilang atau salah.

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 {
    // Bekerja dengan presentasi yang didekripsi.
} finally {
    presentation.dispose();
}

Hapus Enkripsi dari Presentasi

Muat presentasi dengan kata sandi pembukanya, panggil ProtectionManager.removeEncryption, dan simpan hasilnya. Presentasi yang disimpan kemudian dapat dimuat tanpa kata sandi.

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();
}

Validasi Kata Sandi Pembuka Sebelum Memuat

Gunakan PresentationFactory.getPresentationInfo untuk memperoleh PresentationInfo tanpa membuat instance presentasi lengkap. Periksa PresentationInfo.isPasswordProtected sebelum meminta atau memvalidasi kata sandi. Ketika proteksi ada, validasikan nilai yang diberikan dengan PresentationInfo.checkPassword.

Alur Kerja Berbasis Path File

Contoh berikut memvalidasi kata sandi pembuka untuk file PPTX, memberikan nilai yang telah divalidasi ke LoadOptions.setPassword, lalu memuat presentasi lengkap:

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();
    }
}

Alur Kerja Berbasis Stream

Gunakan PresentationFactory.getPresentationInfoFromStream untuk memeriksa aliran dapat dibaca Node.js. Setelah aliran inspeksi dikonsumsi, buat aliran baru sebelum memuat presentasi lengkap dengan Presentation.createPresentationFromStream.

Contoh berikut menggunakan file 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();
                }
            }
        });
    }
});

Nilai Kembalian checkPassword

PresentationInfo.checkPassword mengembalikan true hanya ketika presentasi memiliki kata sandi pembuka dan kata sandi yang diberikan benar. Ia mengembalikan false dalam masing‑masing kasus berikut:

  • Kata sandi salah.
  • Presentasi tidak memiliki kata sandi pembuka.
  • Kata sandi yang diberikan null atau kosong.

Perilaku ini sama untuk presentasi PPT dan PPTX.

Periksa Apakah Presentasi yang Dimuat Terenkripsi

Setelah memuat presentasi dengan kata sandi yang benar, periksa ProtectionManager.isEncrypted untuk mengonfirmasi bahwa sumber presentasi terenkripsi. Untuk mendeteksi proteksi kata sandi pembuka sebelum memuat, gunakan PresentationInfo.isPasswordProtected seperti yang ditunjukkan di atas.

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();
}

Rekomendasi Keamanan

Lindungi Presentasi dengan Kata Sandi Secara Online

  1. Buka aplikasi Aspose.Slides Lock.
  2. Pilih atau unggah presentasi.
  3. Masukkan kata sandi untuk proteksi tampilan.
  4. Opsional, masukkan kata sandi terpisah untuk proteksi pengeditan.
  5. Terapkan proteksi dan unduh berkas hasil.

FAQ

Apa perbedaan antara kata sandi pembuka dan kata sandi proteksi penulisan?

Kata sandi pembuka mengenkripsi presentasi dan diperlukan untuk memuat kontennya. Kata sandi proteksi penulisan membatasi modifikasi tanpa mengenkripsi konten.

Bisakah saya memvalidasi kata sandi pembuka tanpa memuat semua slide?

Ya. Dapatkan informasi presentasi, periksa apakah proteksi kata sandi pembuka ada, dan validasikan kata sandi sebelum membuat instance presentasi lengkap.

Bisakah aplikasi membaca metadata tanpa kata sandi pembuka?

Ya, tetapi hanya ketika presentasi dienkripsi dengan enkripsi properti dokumen dinonaktifkan. Aplikasi harus menggunakan mode pemuatan hanya properti dokumen yang dijelaskan di Kelola Properti Presentasi.

Apakah alur kerja pemeriksaan kata sandi mendukung PPT dan PPTX?

Ya. Deteksi dan validasi kata sandi berbasis path file maupun berbasis stream berperilaku sama untuk presentasi PPT dan PPTX.