حماية العروض التقديمية من الكتابة في بايثون
مقدمة
كلمة مرور الحماية من الكتابة تقيد تعديل العرض التقديمي ولكنها لا تشفر محتواه. يمكن للمستخدمين تحميل وعرض عرض تقديمي محمي من الكتابة دون كلمة المرور. اعتمادًا على التطبيق، قد يتمكنون أيضًا من تحرير المحتوى وحفظه باسم مختلف، لذا لا ينبغي اعتبار الحماية من الكتابة كآلية سرية.
كلمة مرور الفتح تخدم غرضًا مختلفًا: فهي تشفر العرض التقديمي وتكون ضرورية لتحميل محتواه. لتشفير عرض تقديمي أو التحقق من صحة كلمة مرور الفتح، راجع Password-Protect Presentations.
تنطبق سير العمل في هذه المقالة على كل من عروض PPT و PPTX. تستخدم الأمثلة ملفات PPTX؛ عند الحفظ إلى PPT، استخدم امتداد .ppt وتنسيق الحفظ المقابل لـ PPT.
تعيين حماية الكتابة على عرض تقديمي
استخدم ProtectionManager.setWriteProtection لتعيين كلمة مرور لتعديل العرض التقديمي. حفظ العرض التقديمي يحافظ على إعداد الحماية.
المثال التالي يحدد حماية الكتابة على عرض 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()
تحميل عرض محمي من الكتابة
نظرًا لأن حماية الكتابة لا تشفر محتوى العرض التقديمي، لا يلزم أي كلمة مرور لتحميل العرض. تكون كلمة المرور ذات صلة فقط عند التحقق من صلاحية تعديل العرض المحمي.
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()
لا تمرر كلمة مرور حماية الكتابة إلى LoadOptions.setPassword. هذه الطريقة تقبل كلمة مرور الفتح للمحتوى المشفر. إذا كان للعرض كلا نوعي الحماية، قدم كلمة مرور الفتح لتحميله وتعامل مع كلمة مرور حماية الكتابة بشكل منفصل.
إزالة حماية الكتابة من عرض تقديمي
استخدم ProtectionManager.removeWriteProtection لإزالة قيود التعديل، ثم احفظ العرض التقديمي.
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()
التحقق مما إذا كان العرض محميًا من الكتابة
لفحص ملف دون إنشاء كائن Presentation كامل، استدعِ PresentationFactory.getPresentationInfo وتفحص PresentationInfo.isWriteProtected. تستخدم الطريقة NullableBool وتعيد NullableBool.True_ عندما يتم اكتشاف حماية الكتابة.
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.")
توفر نسخة التدفق من PresentationFactory.getPresentationInfo نفس المعلومات لعرض تم توفيره كتيار.
التحقق من صحة كلمة مرور حماية الكتابة
استخدم PresentationInfo.checkWriteProtection للتحقق من صحة كلمة مرور التعديل دون تحميل العرض الكامل. تحقق أولاً من PresentationInfo.isWriteProtected بحيث يطلب التطبيق أو يتحقق من كلمة المرور فقط عندما تكون حماية الكتابة موجودة.
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 يتحقق فقط من كلمة مرور حماية الكتابة. لا يتحقق من كلمة مرور الفتح ولا يحدد ما إذا كان يمكن تحميل المحتوى المشفر. بالمقابل، PresentationInfo.checkPassword يتحقق فقط من كلمة مرور الفتح. إذا تم تحميل عرض كامل بالفعل، يوفر ProtectionManager.checkWriteProtection فحصًا مكافئًا لحماية الكتابة عبر مدير الحماية الخاص به.
في التطبيقات الإنتاجية، لا تقوم بتسجيل كلمات المرور أو تضمينها في رسائل التشخيص. تجنب محاولات التحقق المتكررة غير الضرورية، واحتفظ بكلمات المرور في الذاكرة فقط للمدة اللازمة.
الأسئلة الشائعة
هل تقوم حماية الكتابة بتشفير العرض التقديمي؟
لا. إنها تقيد التعديل ولكنها تترك محتوى العرض متاحًا للتحميل والعرض.
هل كلمة مرور حماية الكتابة مطلوبة لفتح العرض التقديمي؟
لا. فقط كلمة مرور الفتح مطلوبة لتحميل محتوى العرض المشفر.
هل يمكن أن يحتوي العرض التقديمي على كل من كلمة مرور الفتح وكلمة مرور حماية الكتابة؟
نعم. قدم كلمة مرور الفتح عبر خيارات التحميل لفتح العرض المشفر، وتحقق من كلمة مرور حماية الكتابة بشكل منفصل عندما تكون صلاحية الت تعديل مطلوبة.