التعامل مع ملفات PDF في بايثون: دليل شامل لمكتبة PyPDF2
PDF هو أحد أكثر التنسيقات شيوعًا للمستندات الإلكترونية. لكن التعامل معه، مثل الدمج والتقسيم والتشفير أو استخراج النص، يتطلب أدوات موثوقة. في بايثون، تُعد مكتبة PyPDF2 واحدة من أشهر وأكثر المكتبات استقرارًا للعمل مع ملفات PDF.
تتيح PyPDF2 للمطور قراءة وتعديل وإنشاء ملفات PDF، بالإضافة إلى الحصول على البيانات الوصفية، وإدارة الصفحات، وإضافة الحماية، وحتى تضمين العلامات المائية. إنها أداة قوية لأتمتة سير العمل مع المستندات وللتكامل مع الخدمات الأخرى.
ما هي PyPDF2
PyPDF2 هي مكتبة بايثون للتعامل مع ملفات PDF، تم تطويرها كنسخة محسّنة من المكتبة الأصلية PyPDF. توفر واجهة برمجة تطبيقات عالية المستوى لقراءة وكتابة وتعديل مستندات PDF دون الحاجة لفهم البنية الداخلية لتنسيق PDF.
الإمكانيات الأساسية للمكتبة
- قراءة واستخراج النص من ملفات PDF
- دمج عدة مستندات PDF
- تقسيم PDF إلى صفحات فردية
- إضافة العلامات المائية وتراكب الصفحات
- تشفير وفك تشفير ملفات PDF
- التعامل مع البيانات الوصفية للمستندات
- تدوير وتغيير حجم الصفحات
- التعامل مع الإشارات المرجعية وجدول المحتويات
تثبيت PyPDF2
يتم تثبيت المكتبة عبر pip:
pip install PyPDF2
للحصول على أداء أكثر استقرارًا، يُنصح أيضًا بتثبيت التبعيات الإضافية:
pip install PyPDF2[crypto]
الفئات والمكونات الأساسية
PdfReader
فئة PdfReader مخصصة لقراءة ملفات PDF. توفر الوصول إلى الصفحات والبيانات الوصفية والمعلومات الأخرى للمستند.
PdfWriter
فئة PdfWriter تُستخدم لإنشاء ملفات PDF جديدة أو تعديل الملفات الموجودة. تتيح إضافة الصفحات وتطبيق التشفير وتغيير البيانات الوصفية.
PdfMerger
فئة PdfMerger متخصصة في دمج عدة ملفات PDF في مستند واحد مع إمكانية ترتيب الصفحات.
العمليات الأساسية مع PDF
قراءة ملفات PDF
from PyPDF2 import PdfReader
# تحميل ملف PDF
reader = PdfReader("example.pdf")
# الحصول على عدد الصفحات
print(f"عدد الصفحات: {len(reader.pages)}")
# استخراج النص من الصفحة الأولى
first_page = reader.pages[0]
text = first_page.extract_text()
print(text)
استخراج النص من جميع الصفحات
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
full_text = ""
for page_num, page in enumerate(reader.pages):
text = page.extract_text()
full_text += f"--- الصفحة {page_num + 1} ---\n{text}\n\n"
print(full_text)
التحقق من معلومات المستند
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
# التحقق من التشفير
if reader.is_encrypted:
print("الملف مشفر")
else:
print("الملف غير مشفر")
# الحصول على أبعاد الصفحة الأولى
page = reader.pages[0]
print(f"حجم الصفحة: {page.mediabox}")
print(f"الدوران: {page.rotation} درجة")
دمج ملفات PDF
الدمج البسيط
from PyPDF2 import PdfMerger
merger = PdfMerger()
# إضافة الملفات
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.append("file3.pdf")
# حفظ النتيجة
merger.write("merged_document.pdf")
merger.close()
الدمج مع تحديد نطاق الصفحات
from PyPDF2 import PdfMerger
merger = PdfMerger()