Presentasi dengan Proteksi Kata Sandi di Python

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 perlindungan penulisan. Perlindungan penulisan membatasi modifikasi tetapi tidak mengenkripsi konten atau mencegah presentasi dimuat. Untuk mengelola kata sandi bagi modifikasi presentasi, lihat Presentasi yang Dilindungi Penulisan.

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

Enkripsi Presentasi dengan Kata Sandi Pembuka

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

Contoh berikut mengenkripsi presentasi PPTX:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

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

Biarkan Properti Dokumen Publik

Secara default, Aspose.Slides memasukkan 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 tetap publik:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    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()

Memberikan False ke ProtectionManager.setEncryptDocumentProperties tidak membuat slide, master, tata letak, bentuk, media, atau konten presentasi lainnya menjadi 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. Memuat akan gagal bila kata sandi pembuka diperlukan tetapi kata sandi yang diberikan hilang atau salah.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    # Bekerja dengan presentasi yang telah didekripsi.
    pass
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.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, SaveFormat

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    presentation.getProtectionManager().removeEncryption()
    presentation.save("encryption-removed.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Validasi Kata Sandi Pembuka Sebelum Memuat

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

Alur Kerja Jalur Berkas

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_path)

if not presentation_info.isPasswordProtected():
    print("The presentation does not have an opening password.")
elif not presentation_info.checkPassword(password):
    print("The opening password is incorrect.")
else:
    load_options = LoadOptions()
    load_options.setPassword(password)

    presentation = Presentation(file_path, load_options)
    try:
        print("The presentation was validated and loaded successfully.")
    finally:
        presentation.dispose()

Alur Kerja Aliran

Versi overload aliran dari PresentationFactory.getPresentationInfo menyediakan alur kerja yang sama. Atur ulang posisi aliran yang dapat dicari sebelum memuat presentasi lengkap dari aliran tersebut.

Contoh berikut menggunakan file PPT:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

FileInputStream = jpype.JClass("java.io.FileInputStream")

password = "open_password"

presentation_stream = FileInputStream("protected-presentation.ppt")
try:
    presentation_info = PresentationFactory.getInstance().getPresentationInfo(presentation_stream)

    if not presentation_info.isPasswordProtected():
        print("The presentation does not have an opening password.")
    elif not presentation_info.checkPassword(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.getChannel().position(0)

        load_options = LoadOptions()
        load_options.setPassword(password)

        presentation = Presentation(presentation_stream, load_options)
        try:
            print("The presentation was validated and loaded successfully.")
        finally:
            presentation.dispose()
finally:
    presentation_stream.close()

Nilai Kembali checkPassword

PresentationInfo.checkPassword mengembalikan True hanya ketika presentasi memiliki kata sandi pembuka dan kata sandi yang diberikan benar. Ini mengembalikan False dalam masing‑masing kasus berikut:

  • Kata sandi tidak tepat.
  • Presentasi tidak memiliki kata sandi pembuka.
  • Kata sandi yang diberikan adalah None 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 memastikan bahwa presentasi sumber telah dienkripsi. Untuk mendeteksi perlindungan kata sandi pembuka sebelum memuat, gunakan PresentationInfo.isPasswordProtected seperti yang ditunjukkan di atas.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    is_encrypted = presentation.getProtectionManager().isEncrypted()
    print(f"The presentation is encrypted: {is_encrypted}")
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 perlindungan tampilan.
  4. Opsional, masukkan kata sandi terpisah untuk perlindungan pengeditan.
  5. Terapkan perlindungan dan unduh file hasilnya.

Tanya Jawab

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

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

Bisakah saya memvalidasi kata sandi pembuka tanpa memuat semua slide?

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

Apakah aplikasi dapat membaca metadata tanpa kata sandi pembuka?

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

Apakah alur kerja pemeriksaan kata sandi mendukung PPT dan PPTX?

Ya. Deteksi dan validasi kata sandi berbasis jalur berkas maupun aliran berperilaku sama untuk presentasi PPT dan PPTX.