اليوم سنتعرف على مكتبة مميزة pdftotext هذه المكتبة سنقوم باستعمالها لتحويل كتاب الكتروني pdf الى ملف نصي text . سنقوم ببرمجة سكريبت بسيط لفهم الية التحويل وهذا بشرح مثال حتى يتضح المقال.
الشرح
شرح تثبيت المكتبة وملحقاتهاتثبيت الملحقات OS Dependencies
افتح الطرفية أو Terminal وانسخ امر التثبيت المناسب لنظامك
Debian, Ubuntu, and friends:
```
sudo apt-get update```
sudo apt-get install build-essential libpoppler-cpp-dev pkg-config python-dev
Fedora, Red Hat, and friends:
```
sudo yum install gcc-c++ pkgconfig poppler-cpp-devel python-devel redhat-rpm-config```
macOS:
brew install pkg-config poppler```
تثبيت المكتبة pdftotext
```
pip install pdftotext```
شرح برمجة السكريبت
افتح محرر البايثون الذي تفضله
أكتب أول سطر حتى نحدد نسخة البايثون المراد العمل عليها, طبعا دائما افضل النسخة القديمة 2 لانها تدعم جميع المكاتب.
#!/usr/bin/env pythonثم نحتاج استدعاء المكتبة
import pdftotext
1- نقوم بفتح ملف pdf المراد تحويله بواسطة دالة Open
ثم قراءة محتواه على شكل Read Binary باستعمال rb
ونضع محتواه في كائن نسميه f
with open("ScapyCheatSheet_v0.2.pdf", "rb") as f:
2- الأن نأتي لدالة التحويل pdftotext نمرر لها ملفنا السابق f
ستقوم بتحويله الى نص وتضعه في متغير المسمى pdf
pdf = pdftotext.PDF(f)
3- نغلق الان عملية القراءة حتى لا تستهلك الرام
f.close()
الأن مثلا سنقوم بكتابة ما قرأناه داخل ملف سأسميه output.txt
1- ننشئ ملف output.txt بواسطة الدالة open
2- نعطيه خاصية الكتابة w بمعنى write
3- وسنتحكم بهذا الملف أو الكائن باسم txt
with open("output.txt", 'w') as txt:
4- نقوم بكتابة ملفنا الذي حولناه سابقا المسمى pdf داخل الملف output.txt
والتي يشير اليها داخل سكريبت البايثون الخاص بنا الكائن txt باستعمال امر الكتابة ()txt.write.
txt.write("\n\n".join(pdf).encode('utf-8'))
استعملنا encode والترميز utf-8 حتى يقوم بكتابة الملف على القرص الصلب دون مشاكل
لانه يوجد رموز وربما الحروف العربية قد تتشوه ولا يتم حفظها
ثم اغلقنا مقبض الكتابة
txt.close()
الكود النهائي
نتيجة التحويل
معلومات اضافية
لو اردنا تحويل ملف pdf يحتوي على رقم سري نستعمل الدالة كالاتي
نقوم بتمرير الكتاب المراد تحويله ومعه كلمة السر
pdf = pdftotext.PDF(f,"password")
لمعرفة كم يحتوي الكتاب pdf من صفحات نستعمل الدالة len
print(len(pdf))
اذا اردنا طباعة أو تحويل صفحة معينة من الكتاب نستعمل [رقم الصفحة]pdf نتعامل معها على انها مصفوفة
print(pdf[0])
print(pdf[1])