pdfkit – إنشاء PDF من HTML في بايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هي مكتبة 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':                    

توصيات