صورة



01  مقدمة إلى PyMuPDF

1 المقدمة


قبل تقديم PyMuPDF ، دعنا نلقي نظرة على MuPDF . يمكن أن نرى من نموذج التسمية أن PyMuPDF هو شكل واجهة Python لـ MuPDF .


MuPDF


MuPDF  هو عارض  PDF و XPS وكتاب إلكتروني خفيف الوزن . يتكون MuPDF  من مكتبات البرامج وأدوات سطر الأوامر والعارضين لأنظمة أساسية مختلفة.


تم تصميم العارض في MuPDF لرسومات  عالية الجودة مضادة للتحيز. إنه يعرض نصًا بقياسات ومسافات دقيقة في حدود جزء صغير من البكسل لتحقيق أقصى قدر من الدقة عند إعادة إنتاج مظهر صفحة مطبوعة على الشاشة.


هذا العارض صغير وسريع ولكنه كامل. وهو يدعم تنسيقات مستندات متعددة مثل PDF و XPS و OpenXPS و CBZ و EPUB و FictionBook 2 . يمكنك إضافة تعليقات توضيحية إلى مستندات PDF وملء النماذج باستخدام عارض الهاتف المحمول (ستظهر هذه الميزة قريبًا على عارض سطح المكتب أيضًا).


تتيح لك أداة سطر الأوامر إضافة تعليقات توضيحية وتحرير وتحويل المستندات إلى تنسيقات أخرى مثل HTML و SVG و PDF و CBZ. يمكنك أيضًا كتابة نصوص في Javascript لمعالجة المستندات.


PyMuPDF  PyMuPDF (الإصدار الحالي 1.18.17) هو رابط Python يدعم MuPDF (الإصدار الحالي 1.18. *).


باستخدام PyMuPDF ، يمكنك الوصول إلى الامتداد بامتداد

".pdf" أو ".xps" أو ".oxps" أو ".cbz" أو ".fb2" أو ".epub" .

بالإضافة إلى ذلك ، يمكن أيضًا التعامل مع حوالي 10 تنسيقات صور شائعة مثل المستندات

: ".png" ، ".jpg" ، ".bmp" ، ".tiff" ، إلخ.


2. الوظيفة


بالنسبة لجميع أنواع المستندات المدعومة ، يمكنك:


فك تشفير الملفات - الوصول إلى المعلومات الوصفية والروابط والإشارات المرجعية - عرض الصفحات بتنسيق نقطي ( PNG وغيرها) أو SVG بتنسيق متجه - البحث عن نص - استخراج النص والصور - التحويل إلى تنسيقات أخرى: PDF ، (X) HTML ، XML ، JSON ، نص  لمستندات PDF ، هناك الكثير من الوظائف الإضافية: يمكن إنشاؤها أو دمجها أو تقسيمها . يمكن إدراج الصفحات أو حذفها أو إعادة ترتيبها أو تعديلها بعدة طرق (بما في ذلك التعليقات وحقول النموذج). - يمكن استخراج الصور والخطوط أو إدراجها - الملفات المضمنة مدعومة بالكامل - يمكن إعادة تنسيق ملفات PDF لدعم الطباعة المزدوجة أو فصل الألوان أو شعارات التطبيق أو العلامات المائية - الدعم الكامل لحماية كلمة المرور: فك التشفير والتشفير واختيار طريقة التشفير والأذونات المستوى وإعدادات كلمة مرور المستخدم / المالك - مفهوم محتوى اختياري بتنسيق PDF مع دعم للصور والنصوص والرسومات - يمكن الوصول إلى بنية PDF منخفضة المستوى وتعديلها


وحدة سطر الأوامر " python -m fitz ... " أداة متعددة الاستخدامات مع الميزات التالية


التشفير / فك التشفير / التحسين - إنشاء مستندات ثانوية - تسلسل المستند - استخراج الصورة / الخط - الدعم الكامل للملفات المضمنة - استخراج النص مع حفظ التخطيط (جميع المستندات) ** جديد: استخراج النص المحفوظ للتخطيط! ** البرنامج النصي `fitzcliy.py` مختلف يتم توفير تنسيقات استخراج النص عبر الأمر الفرعي "gettext" `. من الأمور ذات الأهمية الخاصة الحفاظ على تخطيط الدورة التدريبية ، والذي يقوم بإنشاء نص أقرب ما يمكن إلى التخطيط المادي الأصلي ، مع المناطق المحيطة بالصور ، أو نسخ النص في الجداول والنص متعدد الأعمدة.



02  التثبيت


يمكن تثبيت PyMuPDF من المصدر أو من العجلات .


بالنسبة لأنظمة Windows و Linux و Mac OSX ، توجد عجلات في قسم التنزيلات في PyPI . يتضمن ذلك إصدارات Python 64 بت 3.6 إلى 3.9 . يوجد أيضًا إصدار 32 بت لنظام التشغيل Windows. كانت هناك أيضًا بعض المشكلات في بنية Linux ARM منذ وقت قريب - ابحث عن علامة النظام الأساسي manylinux2014_aarch64 .


بصرف النظر عن المكتبة القياسية ، لا تحتوي على تبعيات خارجية إلزامية. توجد بعض الطرق الرائعة فقط إذا تم تثبيت حزم معينة:
سادة: مطلوب عند استخدام Pixmap.pil_save () و  Pixmap.pil_tobytes () - fontTools : مطلوب عند استخدام Document.subset_fonts () - خطوط pymupdf  هي خيار جيد للخط ويمكنها يمكن استخدامها لطرق إخراج النص باستخدام الأمر pip install: pip install PyMuPDF

استيراد المكتبة:

صورة

ملاحظة حول تسمية fitz


بيان استيراد Python القياسي لهذه المكتبة هو import fitz . هناك سبب تاريخي لهذا:  مكتبة التقديم الأصلية لـ MuPDF كانت تسمى Libart .


بعد أن استحوذت Artifex Software على مشروع MuPDF ، تحول تركيز التطوير إلى كتابة مكتبة رسومات حديثة جديدة تسمى "Fitz" . بدأ Fitz كمشروع للبحث والتطوير ليحل محل مكتبة رسومات Ghostscript القديمة ، ولكنه بدلاً من ذلك أصبح محرك التقديم لـ MuPDF (مقتبس من Wikipedia).


03 كيف  تستعمل

1. استيراد المكتبة والتحقق من الإصدار

صورة

2. افتح المستند

صورة

سيؤدي هذا إلى إنشاء مستند كائن المستند . يجب أن يكون اسم الملف سلسلة Python لملف موجود. يمكن أيضًا فتح المستندات من بيانات الذاكرة ، أو إنشاء ملفات PDF فارغة جديدة. يمكنك أيضًا استخدام المستندات كمديري السياق.


3. توثيق الأساليب والخصائص


| الطريقة / الخاصية | الوصف | ------ | Document.page_count | عدد الصفحات (int) | Document.metadata | البيانات الوصفية ( dict |) | قراءة مثال على الصفحة:

صورة

4. احصل على البيانات الوصفية


يدعم PyMuPDF بشكل كامل البيانات الوصفية القياسية. Document.metadata هو قاموس Python بالمفاتيح التالية . إنه يعمل مع جميع أنواع المستندات ، ولكن لا تحتوي جميع الإدخالات دائمًا على بيانات. حقل البيانات الوصفية عبارة عن سلسلة ، أو لا شيء إذا لم تتم الإشارة إلى غير ذلك. لاحظ أيضًا أنه لن تحتوي جميع البيانات دائمًا على بيانات ذات مغزى - حتى لو لم تكن موجودة على الإطلاق.


| مفتاح | القيمة | ------ | منتج | منتج (منتج برمجيات) | تنسيق | تنسيق: "PDF-1.4" ، "EPUB" ، إلخ. | تشفير | طريقة تشفير مستخدمة إن وجدت | مؤلف | مؤلف | تاريخ التعديل | تاريخ آخر تعديل | الكلمات الرئيسية | الكلمات الرئيسية | العنوان | العنوان | تاريخ الإنشاء | تاريخ الإنشاء | المنشئ | إنشاء التطبيق | الموضوع | الموضوع


5. احصل على موجز لأهدافك

صورة

6. الصفحة


يعتبر التعامل مع الصفحة في صميم وظائف MuPDF . • يمكنك تجسيد الصفحات كصور نقطية أو متجهة ( SVG ) ، مع خيارات لتغيير حجم الصفحات أو تدويرها أو نقلها أو اقتصاصها. • يمكنك استخراج نص الصفحة والصور بتنسيقات مختلفة ، والبحث عن سلاسل نصية. • بالنسبة لمستندات PDF ، هناك المزيد من الطرق لإضافة نص أو صور إلى الصفحات.


أولاً ، يجب إنشاء صفحة صفحة. إليك طريقة واحدة للمستند:

صورة

يمكن استخدام أي عدد صحيح هنا -inf & lt؛ pno & lt؛ page_count . يتم العد التنازلي للأرقام السالبة من النهاية ، لذا فإن doc [-1] هي الصفحة الأخيرة ، تمامًا مثل تسلسل Python.


تتمثل الطريقة الأكثر تقدمًا في استخدام المستند كمكرر للصفحات:

صورة

بعد ذلك ، نقدم بشكل أساسي العمليات الشائعة لـ Page!


أ. افحص الصفحة بحثًا عن ارتباطات أو تعليقات أو حقول نموذج


عند عرض المستند مع بعض برامج العارض ، يظهر الارتباط على هيئة == "منطقة فعالة" ==. إذا نقرت عندما يظهر المؤشر رمز اليد ، فسيتم نقلك عادةً إلى العلامة المشفرة في منطقة نقطة الاتصال هذه. إليك كيفية الحصول على جميع الروابط:

صورة

الروابط هي قائمة قواميس بايثون .


متاح أيضًا كمكرر:

صورة

إذا كنت تتعامل مع صفحات مستند PDF ، فقد تكون هناك أيضًا تعليقات توضيحية (Annot) أو حقول نموذج (Widget) ، لكل منها مكرر خاص به:

صورة

ب. تقديم الصفحة


ينشئ هذا المثال صورة نقطية لمحتوى الصفحة:

صورة

pix هو كائن Pixmap يحتوي (في هذه الحالة) على صورة RGB للصفحة ويمكن استخدامه لأغراض متنوعة.


توفر الطريقة Page.get_pixmap () العديد من المتغيرات للتحكم في الصورة: الدقة ، ومساحة اللون (على سبيل المثال لإنشاء صور بتدرج الرمادي أو الصور باستخدام نظام ألوان مطروح) ، والشفافية ، والدوران ، والانعكاس ، والتحول ، والقص ، وما إلى ذلك.


على سبيل المثال: لإنشاء صورة RGBA (أي تحتوي على قناة ألفا) ، حدد pix = page.get_pixmap (alpha = True) . \


تحتوي خريطة Pixmap على العديد من الأساليب والخصائص المشار إليها أدناه. يتضمن ذلك عرض عدد صحيح ، وارتفاع (لكل بكسل) ، وخطوة (بايت لخط صورة أفقي واحد). تمثل أمثلة السمات مناطق بايت مستطيلة (كائنات بايثون بايت) تمثل بيانات الصورة.
يمكنك أيضًا استخدام page.get_svg_image () لإنشاء صورة متجهة لصفحة.


ج حفظ صورة الصفحة في ملف


يمكننا ببساطة تخزين الصورة في ملف PNG :

صورة

د - استخراج النصوص والصور


يمكننا أيضًا استخراج جميع النصوص والصور والمعلومات الأخرى للصفحة بأشكال ومستويات مختلفة من التفاصيل:

صورة

استخدم أحد السلاسل التالية لاختيار تنسيق مختلف:


"text": (افتراضي) نص عادي مع أسطر جديدة. لا يوجد تنسيق ، لا توجد تفاصيل عن موضع النص ، لا توجد صور - "الكتل": إنشاء قائمة بكتل النص (الفقرات) - "الكلمات": إنشاء قائمة بالكلمات (سلاسل بدون مسافات) - "html": إنشاء صورة مرئية كاملة لـ إصدار الصفحة ، بما في ذلك أي صور. يمكن عرض ذلك عبر مستعرض الإنترنت - "dt" / "json": نفس مستوى المعلومات مثل HTML ، ولكن مثل قاموس Python أو سلسلة resp.JSON. - "Rawdict" / "Rawjson": مجموعة شاملة من "deb" / "json". كما يوفر تفاصيل شخصية مثل XML. - "xhtml": نفس مستوى المعلومات النصية كنسخة نصية ، لكن مع الصور. - "xml": لا يحتوي على صور ، ولكنه يحتوي على معلومات كاملة عن الموضع والخط لكل حرف نصي. استخدم وحدة XML للتفسير.


ه. نص البحث


يمكنك العثور على الموضع الدقيق لسلسلة نصية على الصفحة:

صورة

سيوفر هذا قائمة بالمستطيلات ، كل منها يحتوي على سلسلة "mupdf" (غير حساسة لحالة الأحرف). يمكنك استخدام هذه المعلومات لتمييز هذه المناطق (PDF فقط) أو لإنشاء مراجع ترافقية للمستندات.


7. التلاعب بقوات الدفاع الشعبي


PDF هو نوع المستند الوحيد الذي يمكن تعديله باستخدام PyMuPDF . أنواع الملفات الأخرى للقراءة فقط.


ومع ذلك ، يمكنك تحويل أي مستند (بما في ذلك الصور) إلى PDF ثم تطبيق جميع وظائف PyMuPDF على نتيجة التحويل ، Document.convert_to_pdf () .


Document.save()始终将PDF以其当前(可能已修改)状态存储在磁盘上。


通常,您可以选择是保存到新文件,还是仅将修改附加到现有文件(“增量保存”),这通常要快得多。


下面介绍如何操作PDF文档。

a. 修改、创建、重新排列和删除页面


有几种方法可以操作所谓页面树(描述所有页面的结构):
PDF:Document.delete_page()Document.delete_pages()删除页面-Document.copy_page()、Document.fullcopy_page()和Document.move_page()将页面复制或移动到同一文档中的其他位置。


Document.select()将PDF压缩到选定页面,参数是要保留的页码序列。这些整数都必须在0<=i<page_count范围内。执行时,此列表中缺少的所有页面都将被删除。剩余的页面将按顺序出现,次数相同(!)正如您所指定的那样。因此,您可以轻松地使用创建新的PDF:


第一页或最后10页- 仅奇数页或偶数页(用于双面打印)- 包含或不包含给定文本的页- 颠倒页面顺序


保存的新文档将包含仍然有效的链接、注释和书签(i.a.w.指向所选页面或某些外部资源)。


Document.insert_page()Document.new_page()插入新页面。此外,页面本身可以通过一系列方法进行修改(例如页面旋转、注释和链接维护、文本和图像插入)。


b. 连接和拆分PDF文档


方法Document.insert_pdf()在不同的pdf文档之间复制页面。下面是一个简单的joiner示例(doc1和doc2在PDF中打开):

صورة

下面是一个拆分doc1的片段。它将创建第一页和最后10页的新文档:

صورة

c. 保存


Document.save()将始终以当前状态保存文档。


您可以通过指定选项incremental=True将更改写回原始PDF。这个过程(通常)非常快,因为更改会附加到原始文件,而不会完全重写它。


d. 关闭


在程序继续运行时,通常需要“关闭”文档以将底层文件的控制权交给操作系统。


这可以通过Document.close()方法实现。除了关闭基础文件外,还将释放与文档关联的缓冲区。

往期精彩回顾




1.厉害啦|首批ITIL4认证即将颁发!


2.项目管理PRINCE2®认证


3.AWS亚马逊云系统运维和基础架构


4.ISO27001Foundation和ISO27001LA的区别


5.部署和规划OFFICE365

6.最新云安全|CCSK V4国际认证


7.PMP成绩查询与电子版证书下载方法

8.AWS | 亚马逊云系统运维和架构课程


9. شهادة مستوى ممارس PRINCE2® إدارة المشاريع

10. ITIL 4 Foundatin Certification Training


11. تحليل بيانات Power BI عمليًا

12. Make Point more Powe | التدريب على مهارات تطبيق الأعمال في PPT (1)


13. لا تتشابك | وضح أي PMP و PRINCE2 يجب تعلمه؟



تقنية Sishuo:

FOURMAS هي مؤسسة استشارية وتدريبية تركز على إدارة خدمات تكنولوجيا المعلومات ، وإدارة المشاريع ، وإدارة أمن المعلومات ، وتخطيط حوكمة تكنولوجيا المعلومات ، وتحسين مهارات تكنولوجيا المعلومات. يحتوي مركز تدريب Four Masters على نظام دورات تدريبية شاملة ومنهجية في مجال تكنولوجيا المعلومات في الصين ، ومفاهيم تدريب ونماذج تدريب متقدمة ، ومعلمين تدريب رفيعي المستوى.

يقع الطلاب الذين تم تدريبهم بواسطة Sishuo Technology في HP و Oracle و SAP و IBM و Fujitsu و Deloitte و PricewaterhouseCoopers و Accenture و Ericsson
و Philips و Bosch و Accenture و CA و SUN و SYMANTEC و P&G
و Johnson Controls و Johnson & Johnson و Pentairwater و Baosteel و Kawasaki و TNT و DHL
والاتصالات المحلية والتأمين المتنقل والتأمين الرئيسي والأوراق المالية والمصرفية وغيرها من المؤسسات والمؤسسات ، لدينا خبرة تدريبية غنية.

صورة