Proteksi Penulisan Presentasi dalam Python
Pendahuluan
Password perlindungan penulisan membatasi modifikasi presentasi tetapi tidak mengenkripsi isinya. Pengguna dapat memuat dan melihat presentasi yang dilindungi tulis tanpa password. Tergantung pada aplikasi, mereka juga dapat mengedit konten dan menyimpannya dengan nama yang berbeda, sehingga perlindungan penulisan tidak boleh dianggap sebagai mekanisme kerahasiaan.
Password pembukaan berfungsi untuk tujuan yang berbeda: ia mengenkripsi presentasi dan diperlukan untuk memuat isinya. Untuk mengenkripsi presentasi atau memvalidasi password pembukaan, lihat Proteksi Kata Sandi pada Presentasi.
Alur kerja dalam artikel ini berlaku untuk presentasi PPT dan PPTX. Contoh menggunakan file PPTX; saat menyimpan ke PPT, gunakan ekstensi .ppt dan format penyimpanan PPT yang sesuai.
Tetapkan Perlindungan Penulisan pada Presentasi
Gunakan ProtectionManager.setWriteProtection untuk menetapkan password untuk memodifikasi presentasi. Menyimpan presentasi akan mempertahankan pengaturan perlindungan.
Contoh berikut menetapkan perlindungan penulisan pada 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().setWriteProtection("modify_password")
presentation.save("write-protected-pres.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Muat Presentasi yang Dilindungi Penulisan
Karena perlindungan penulisan tidak mengenkripsi konten presentasi, tidak diperlukan password untuk memuat presentasi. Password hanya relevan saat memvalidasi otorisasi untuk memodifikasi presentasi yang dilindungi.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("write-protected-pres.pptx")
try:
print("Slide count: " + str(presentation.getSlides().size()))
finally:
presentation.dispose()
Jangan mengirimkan password perlindungan penulisan ke LoadOptions.setPassword. Metode tersebut menerima password pembukaan untuk konten terenkripsi. Jika sebuah presentasi memiliki kedua tipe perlindungan, berikan password pembukaan untuk memuatnya dan tangani password perlindungan penulisan secara terpisah.
Hapus Perlindungan Penulisan dari Presentasi
Gunakan ProtectionManager.removeWriteProtection untuk menghapus pembatasan modifikasi, kemudian simpan presentasi.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("write-protected-pres.pptx")
try:
presentation.getProtectionManager().removeWriteProtection()
presentation.save("write-protection-removed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Periksa Apakah Presentasi Dilindungi Penulisan
Untuk memeriksa file tanpa membuat instance Presentation lengkap, panggil PresentationFactory.getPresentationInfo dan periksa PresentationInfo.isWriteProtected. Metode ini menggunakan NullableBool dan mengembalikan NullableBool.True_ ketika perlindungan penulisan terdeteksi.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import NullableBool, PresentationFactory
presentation_info = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx")
if presentation_info.isWriteProtected() == NullableBool.True_:
print("The presentation is write protected.")
else:
print("Write protection was not detected.")
Overload stream dari PresentationFactory.getPresentationInfo menyediakan informasi yang sama untuk presentasi yang diberikan sebagai aliran.
Validasi Password Perlindungan Penulisan
Gunakan PresentationInfo.checkWriteProtection untuk memvalidasi password modifikasi tanpa memuat presentasi lengkap. Periksa PresentationInfo.isWriteProtected terlebih dahulu sehingga aplikasi hanya meminta atau memvalidasi password ketika perlindungan penulisan ada.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import NullableBool, PresentationFactory
presentation_info = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx")
if presentation_info.isWriteProtected() != NullableBool.True_:
print("The presentation is not write protected.")
elif presentation_info.checkWriteProtection("modify_password"):
print("The write-protection password is correct.")
else:
print("The write-protection password is incorrect.")
PresentationInfo.checkWriteProtection hanya memvalidasi password perlindungan penulisan. Ia tidak memvalidasi password pembukaan atau menentukan apakah konten terenkripsi dapat dimuat. Sebaliknya, PresentationInfo.checkPassword hanya memvalidasi password pembukaan. Jika sebuah presentasi lengkap sudah dimuat, ProtectionManager.checkWriteProtection menyediakan pemeriksaan perlindungan penulisan yang setara melalui manajer perlindungannya.
Dalam aplikasi produksi, jangan mencatat password atau menyertakannya dalam pesan diagnostik. Hindari upaya validasi yang berulang tanpa kebutuhan, dan simpan password dalam memori hanya selama diperlukan.
Lihat juga
FAQ
Apakah perlindungan penulisan mengenkripsi sebuah presentasi?
Tidak. Itu membatasi modifikasi tetapi tetap membuat konten presentasi tersedia untuk dimuat dan dilihat.
Apakah password perlindungan penulisan diperlukan untuk membuka sebuah presentasi?
Tidak. Hanya password pembukaan yang diperlukan untuk memuat konten presentasi yang terenkripsi.
Apakah sebuah presentasi dapat memiliki password pembukaan dan password perlindungan penulisan sekaligus?
Ya. Berikan password pembukaan melalui opsi pemuatan untuk membuka presentasi yang terenkripsi, dan validasi password perlindungan penulisan secara terpisah ketika otorisasi modifikasi diperlukan.