يعد الوصول غير المصرح به إلى الملفات الحساسة مشكلة شائعة اليوم. للتأكد من أن الأشخاص الذين تسمح لهم فقط بالوصول إلى محتوى ملفاتك ، يمكنك تشفيرها قبل الإرسال.
تعرف على كيفية تشفير ملف PDF باستخدام Python ، وكيفية فك تشفير أحد الملفات إلى حالته الأصلية.
تهيئة البيئة
للمتابعة ، يجب أن تكون على دراية بـ أساسيات لغة بايثون.
على محطة Mac الطرفية أو واجهة سطر أوامر Windows ، قم بتشغيل الأمر التالي لتثبيت مكتبة PyMuPDF:
نقطة تثبيت PyMuPDF
ستساعدك هذه المكتبة في فتح ملفات PDF ومعالجتها.
عندما تنتهي من تثبيت PyMuPDF ، تكون جاهزًا لبدء الترميز.
كود المصدر الكامل متاح في ملف مستودع جيثب.
قم باستيراد وحدة Fitz
استيراد وحدة fitz من مكتبة PyMuPDF. سيمكنك ذلك من الاتصال واستخدام الوظائف التي يدعمها.
يستورد فيتز
ستستخدم fitz لفتح ملفات PDF وتشفيرها وفك تشفيرها وحفظها.
تحقق مما إذا كان ملف PDF مشفرًا
قم بإنشاء وظيفة تتحقق مما إذا كان ملف PDF مشفرًا بالفعل بإرجاع قيمة منطقية.
defpdf_is_encrypted(ملف):
pdf = فيتز. ملف المستند)
يعود pdf.is مشفر
ستستخدم هذه الوظيفة لاحقًا لمساعدة البرنامج تلقائيًا على تحديد ما إذا كان سيتم تشفير أو فك تشفير ملف PDF المدخل.
تشفير ملف PDF
قم بإنشاء وظيفة لتشفير إدخال PDF. ستتحقق الوظيفة مما إذا كان ملف PDF مشفرًا بالفعل. إذا لم يتم تشفيره ، فسيتم تشفيره باستخدام خوارزمية AES-256. هذا هو أقوى خوارزمية التشفير التي تقدمها fitz. سيحفظ أخيرًا ملف PDF المشفر.
defencrypt_pdf_file(pdf، password، outfile، file):
لولا pdf_is_encrypted (ملف):
بيرم = كثافة العمليات (
# تأكد من الجميع مع PDF
# يمكن الوصول إليه
فيتز. PDF_PERM_ACCESSIBILITY
| فيتز. PDF_PERM_PRINT # تصاريح الطباعة
| فيتز. PDF_PERM_COPY # تصاريح النسخ
| فيتز. PDF_PERM_ANNOTATE # يسمح بالتعليقات التوضيحية
)# خوارزمية التشفير الإلكتروني
encrypt_meth = fitz. PDF_ENCRYPT_AES_256pdf.save (outfile، encryption = encrypt_meth، user_pw = password،
أذونات = بيرم)
لو pdf.save:
مطبعة("ملف PDF مشفر")
تقوم هذه الوظيفة بحفظ ملف PDF المشفر في مسار الملف الذي تمرره في وسيطة الملف الخارجي.
فك تشفير ملف PDF
قم بإنشاء وظيفة فك التشفير. ستتحقق هذه الوظيفة أولاً مما إذا كان ملف الإدخال مشفرًا. إذا تم تشفيره ، فسيطلب من المستخدم إدخال كلمة المرور. سيحاول بعد ذلك فتح ملف PDF باستخدام كلمة المرور المتوفرة. إذا كانت كلمة المرور صحيحة ، فسيقوم fitz بفك تشفير ملف PDF. سيقوم بعد ذلك بحفظ محتويات ملف PDF الذي تم فك تشفيره في ملف PDF آخر غير محمي.
defفك تشفير(ملف):
لو pdf_is_encrypted (ملف):
كلمة المرور = الإدخال ("أدخل كلمة مرور pdf:")
pdf = fitz.open (ملف)لو pdf.authenticate (كلمة المرور):
pdf.save ("فك تشفير. pdf")
لو pdf.save:
مطبعة("ملف PDF غير مشفر")
آخر:
مطبعة('كلمة سر خاطئة')
يحفظ هذا الرمز ملف PDF غير المحمي في دليل العمل الحالي.
لقد قام بفك تشفير ملف محمية. pdf ملف وحفظه كملف فك تشفير. pdf.
التحكم في انسياب البرنامج
قم بإنشاء وظيفة رئيسية تتحكم في تدفق برنامجك. سيقوم بتخزين مسار إدخال PDF ، واستدعاء وظيفة التشفير وفك التشفير ، وتمرير معلمات الإدخال.
defرئيسي():
# استبدل مسار الملف بأي من المسارين
# ملف pdf المراد تشفيره أو فك تشفيره
ملف = "sample.pdf"
pdf = fitz.open (ملف)
كلمة المرور = "pass123"
encrypt_pdf_file (pdf ، كلمة المرور ، "protected.pdf"، ملف)
فك تشفير (pdf)
لتغيير اسم ملف PDF المشفر ، استبدل "protected.pdf" باسمك ، مع التأكد من الاحتفاظ بامتداد ".pdf".
تشغيل الطريقة الرئيسية
تأكد من تشغيل الطريقة الرئيسية أولاً:
لو __name__ == '__رئيسي__':
رئيسي()
يتحقق هذا الرمز مما إذا كان يتم تشغيل البرنامج النصي كبرنامج رئيسي وليس كوحدة نمطية مستوردة. إذا كان هذا هو البرنامج الرئيسي ، فإنه يستدعي الوظيفة الرئيسية.
طور مهاراتك في بايثون
يعد إنشاء برنامج تشفير / فك تشفير لملفات PDF في Python مشروعًا ممتعًا ولكنه مليء بالتحديات. يساعدك على ممارسة مهاراتك في Python وإتقان التعامل مع الملفات باللغة.
لتعزيز مهاراتك ، يجب أن تعمل على المزيد من مشاريع Python. سيساعدك هذا على التفاعل مع المزيد من مكتبات ووحدات Python. لغة Python متنوعة للغاية ويمكنك تطبيقها في العديد من المجالات لتنفيذ مهام مختلفة.