ما هي مكتبة PDFKit لبايثون
PDFKit هي مكتبة بايثون قوية، تمثل غلافًا للأداة wkhtmltopdf التي تستخدم محرك WebKit لتحويل مستندات HTML إلى ملفات PDF. تتيح هذه المكتبة للمطورين إنشاء مستندات PDF احترافية مع الحفاظ على التنسيقات المعقدة، وأنماط CSS الحديثة، والخطوط المضمنة، ورسومات SVG، وحتى JavaScript.
الميزة الرئيسية لـ PDFKit هي أنها تسمح باستخدام تقنيات الويب المألوفة (HTML، CSS) لإنشاء مستندات يمكن تحويلها لاحقًا إلى PDF بجودة عرض عالية. وهذا يجعلها أداة مثالية لتوليد التقارير، والفواتير، والتذاكر، والشهادات، وغيرها من المستندات ذات المحتوى الديناميكي.
إمكانيات مكتبة PDFKit
التقنيات المدعومة
- HTML5 وCSS3 الحديث
- Bootstrap، Tailwind CSS وإطارات CSS الأخرى
- رسومات SVG والخطوط من الويب
- جداول بتنسيق معقد
- تخطيط Flexbox وGrid
- استعلامات الوسائط CSS
- دعم أساسي لـ JavaScript
مصادر البيانات للتحويل
يدعم PDFKit التحويل من ثلاثة مصادر رئيسية:
- عناوين URL لصفحات الويب
- ملفات HTML محلية
- سلاسل HTML في ذاكرة التطبيق
التثبيت والإعداد
تثبيت مكتبة بايثون
pip install pdfkit
تثبيت wkhtmltopdf
Ubuntu/Debian:
sudo apt update
sudo apt install wkhtmltopdf
macOS (عبر Homebrew):
brew install --cask wkhtmltopdf
Windows: قم بتنزيل ملف التثبيت من الموقع الرسمي https://wkhtmltopdf.org/downloads.html. تتوفر إصدارات لأنظمة Windows Vista وما فوق، سواء 32 بت أو 64 بت.
CentOS/RHEL/Amazon Linux:
# لـ CentOS 7
sudo yum install wkhtmltopdf
# للإصدارات الأحدث
sudo dnf install wkhtmltopdf
التحقق من التثبيت
بعد التثبيت، تأكد من أن wkhtmltopdf متاح في النظام:
wkhtmltopdf --version
إذا لم يتم العثور على الأمر، ستحتاج إلى ضبط المسار إلى الملف التنفيذي في كود بايثون.
الطرق والدوال الأساسية
إنشاء PDF من مصادر مختلفة
import pdfkit
# من URL
pdfkit.from_url("https://example.com", "output.pdf")
# من ملف HTML
pdfkit.from_file("template.html", "output.pdf")
# من سلسلة HTML
html_content = "<h1>عنوان</h1><p>محتوى المستند</p>"
pdfkit.from_string(html_content, "output.pdf")
تكوين مسار wkhtmltopdf
إذا لم يكن wkhtmltopdf موجودًا في متغير PATH للنظام، يمكنك تحديد المسار يدويًا:
config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
pdfkit.from_string(html_content, "output.pdf", configuration=config)
توليد PDF في الذاكرة
لاستخدامه في تطبيقات الويب وAPI، غالبًا ما تحتاج إلى الحصول على PDF كبايتات:
# إرجاع PDF كـ bytes
pdf_bytes = pdfkit.from_string(html_content, False)
# يمكن إرساله عبر استجابة HTTP
from flask import Response
return Response(pdf_bytes, mimetype='application/pdf')
ضبط إعدادات التوليد
خيارات التنسيق الأساسية
options = {
'page-size': 'A4',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'no-outline': أيضاً في المكتبة
إرسال البريد الإلكتروني في Swift: دليل شامل لـ SMTP وMailKit
قوائم المهام في Kotlin: Coroutines وFlow والمكتبات للمعالجة الخلفية
إرسال البريد الإلكتروني في Swift (iOS/macOS): MFMailComposeViewController وSMTP
توليد تقارير PDF بلغة Java باستخدام iText وApache PDFBox