إنشاء ملف PDF في Python
أفضل مكتبي هي pdf-reports
إنشاء تقارير PDF باستخدام Python
يقدم Python، بفضل مكتباته ووحداته الواسعة، أدوات قوية لإنشاء تقارير PDF احترافية.
يستعرض هذا الدليل طرقًا مختلفة لـ إنشاء مستندات PDF باستخدام Python، ويغطي مكتبات شائعة مثل ReportLab، FPDF، Xhtml2pdf، WeasyPrint، Jinja2، pdf-reports وPdfKit.
لماذا إنشاء تقارير PDF باستخدام Python؟
- التحديث التلقائي: يمكن لنصوص Python تلقائية إنشاء التقارير، مما يوفر الوقت ويقلل من أخطاء البشر.
- التخصيص: يمكن تخصيص التقارير حسب الاحتياجات الخاصة بإضافة النصوص، الصور، الجداول، والرسوم البيانية.
- التوافق: يضمن توافق العلامة التجارية عبر التقارير باستخدام قوالب معيارية.
- التنوع: يمكن إنشاء فواتير، تقارير تجارية، ملخصات بيانات، أو أي نوع آخر من المستندات.
مكتبات Python الشائعة لإنشاء PDF
ReportLab
ReportLab هي مكتبة قابلة للتكيف تسمح بإنشاء مستندات PDF بشكل برمجي. تدعم إضافة النصوص، الصور، الجداول، والرسومات، مما يجعلها مناسبة لجميع أنواع التقارير.
المزايا:
- مجموعة ميزات غنية
- واجهة برمجية عالية المستوى سهلة الاستخدام
- دعم ميزات متقدمة مثل التعليقات والأشكال التفاعلية
العيوب:
- منحنى تعلم أصعب مقارنة بالمكتبات الأخرى
- واجهة برمجية أقل وضوحًا لبعض المهام
استخدام ReportLab
التركيب: قم بتثبيت ReportLab باستخدام pip:
pip install reportlab
الإعداد الأساسي:
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# إضافة النص:
python c.drawString(100, 800, "Hello World")
# حفظ PDF:
python c.save()
FPDF
FPDF هي مكتبة بسيطة لكنها قوية لإنشاء مستندات PDF مكتوبة بالكامل بلغة Python. وهي مثالية لإنشاء مستندات PDF بسيطة باستخدام أقل كود ممكن.
المزايا:
- سهلة التعلم والاستخدام
- خفيفة وسريعة
- دعم الأحرف Unicode
العيوب:
- مجموعة ميزات محدودة مقارنة بـ ReportLab
- أقل سيطرة على وضع العناصر على الصفحة
استخدام FPDF
التركيب: قم بتثبيت FPDF باستخدام pip:
pip install fpdf2
الإعداد الأساسي:
from fpdf import FPDF pdf = FPDF()
# إضافة النص:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# حفظ PDF:
python pdf.output('hello.pdf', 'F')
Xhtml2pdf
Xhtml2pdf هي محوّل من HTML/CSS إلى PDF يستخدم ReportLab في الخلفية. وهي مثالية لإنشاء PDFs من قوالب HTML، مما يجعلها خيارًا ممتازًا لتحويل الويب إلى PDF.
المزايا:
- تحويل HTML وCSS إلى PDF
- دعم تخطيطات معقدة ونمطية
- تكامل جيد مع الإطارات الويب مثل Django
العيوب:
- يتطلب معرفة HTML وCSS
- قد لا يكون مناسبًا للتقارير البسيطة وغير المبنية على الويب
استخدام Xhtml2pdf
التركيب: قم بتثبيت Xhtml2pdf باستخدام pip:
pip install xhtml2pdf
إنشاء PDF من HTML: python
from xhtml2pdf import pisa
html = "<h1>Hello World</h1>"
with open('hello.pdf', 'wb') as output_file:
pisa_status = pisa.CreatePDF(html, dest=output_file)
WeasyPrint
WeasyPrint هي مكتبة قابلة للتكيف لـ Python تسمح للمطورين بتحويل HTML وCSS إلى مستندات PDF ذات جودة عالية. وهي مفيدة بشكل خاص لإنشاء تقارير، فواتير، أو أي مستند يتطلب تخطيطًا دقيقًا. أدناه أمثلة عديدة توضح كيفية استخدام WeasyPrint في سيناريوهات مختلفة.
الميزات
- تحويل HTML وCSS إلى مستندات PDF.
- تتعامل مع عرض البيانات الديناميكية باستخدام محركات التمكين مثل Jinja2.
التركيب:
pip install weasyprint
هنا مثال بسيط لإنشاء PDF من سلسلة HTML:
from weasyprint import HTML
html_string = """
<html>
<head><title>نموذج PDF</title></head>
<body>
<h1>مرحباً، WeasyPrint!</h1>
<p>هذا نموذج PDF تم إنشاؤه باستخدام WeasyPrint.</p>
</body>
</html>
"""
HTML(string=html_string).write_pdf("نموذج.pdf")
في هذا المثال، تستخدم فئة HTML من WeasyPrint لتحويل سلسلة HTML إلى ملف PDF يُسمى “نموذج.pdf”.
تحميل HTML من الملفات
يمكنك أيضًا تحميل محتوى HTML مباشرة من الملفات:
from weasyprint import HTML
# تحميل HTML من ملف
HTML('نموذج.html').write_pdf('إخراج.pdf')
هذا الأسلوب مفيد عندما يكون لديك محتوى HTML مخزن في ملف خارجي. استخدام ورقات أسلوب CSS
يدعم WeasyPrint استخدام ورقات أسلوب CSS لتنسيق مستندات PDF. إليك كيفية تطبيق ملف CSS:
from weasyprint import HTML
# تحميل HTML وCSS من الملفات
HTML('نموذج.html').write_pdf('إخراج.pdf', stylesheets=['نموذج.css'])
هذا يسمح بتنسيق أكثر تعقيدًا، مما يجعل من السهل إنشاء PDFs جذابة بصريًا .
Jinja2
Jinja2 هي محرك تمكين قوي لـ Python يسمح بإنشاء محتوى ديناميكي عن طريق إدراج التعبيرات البرمجية، والشروط، والحلقات داخل القوالب. سيستعرض هذا الدليل أمثلة مختلفة على استخدام Jinja2 في Python، من الاستبدال الأساسي للقيم إلى الميزات المتقدمة مثل وراثة القوالب.
ميزات Jinja2 الرئيسية
- محرك تمكين يمكن استخدامه مع WeasyPrint أو ReportLab لإنشاء محتوى HTML ديناميكي.
- مثالي لدمج البيانات في قوالب مُحددة مسبقًا.
- التركيب:
pip install jinja2
انظر أمثلة على الصفحة الرسمية لـ jinja2: https://jinja.palletsprojects.com/en/3.0.x/
pdfkit
pdfkit هي مكتبة قوية لـ Python تبسط عملية تحويل محتوى HTML إلى مستندات PDF. تعمل كغطاء لوحدة wkhtmltopdf، وتستخدم WebKit لعرض صفحات HTML بدقة في تنسيق PDF. سيستعرض هذا الدليل أمثلة مختلفة وحالات استخدام لإنشاء PDFs باستخدام pdfkit.
الميزات الرئيسية
- غطاء لـ wkhtmltopdf، الذي يحول HTML إلى PDF.
- يتطلب تثبيت wkhtmltopdf على النظام. https://wkhtmltopdf.org/downloads.html
التركيب:
# وتأكد من تثبيت wkhtmltopdf.
الاستخدام الأساسي - تحويل سلسلة HTML إلى PDF
يمكنك تحويل سلسلة HTML بسيطة إلى ملف PDF باستخدام pdfkit.from_string():
import pdfkit
html_نموذج = """
<html>
<head><title>نموذج PDF</title></head>
<body>
<h1>هذا هو عنوان</h1>
<p>السطر الأول.</p>
<p>السطر الثاني.</p>
<p>السطر الثالث.</p>
<p>السطر الرابع.</p>
</body>
</html>
"""
pdfkit.from_string(html_نموذج, 'إخراج.pdf')
هذا سيولد ملف PDF يُسمى إخراج.pdf في الدليل الحالي.
تحويل ملف HTML محلي إلى PDF
إذا كان لديك ملف HTML مخزن محليًا، استخدم pdfkit.from_file():
import pdfkit
pdfkit.from_file('محلي.html', 'نموذج.pdf')
مكتبة تقارير PDF (pdf-reports)
إنشاء تقارير PDF باستخدام مكتبة pdf-reports في Python يمكن أن يكون طريقة قوية لإنشاء مستندات احترافية من قوالب HTML أو Pug. تستخدم هذه المكتبة مكونات حديثة عبر إطارة Semantic UI وتقدم روتينات لدمج الجداول، الرسوم البيانية، وغيرها من العناصر في PDFs.
تم تصميم مكتبة pdf-reports لإنشاء تقارير PDF جذابة بصريًا من قوالب HTML أو Pug. تدعم المكتبة رسميًا Python 3.x ويمكنها أيضًا العمل على Python 2.x مع الإصدار المناسب من weasyprint. هذا يجعلها أداة قوية لإنشاء مستندات ديناميكية ومرتبة بشكل جيد برمجيًا.
الميزات الرئيسية
- المكونات الحديثة: تستخدم إطارة Semantic UI لتصميم مكونات حديثة.
- دمج العناصر: تسمح بدمج الجداول، الرسوم البيانية، والعناصر الأخرى في PDFs.
- دعم القوالب: تدعم قوالب HTML وPug لتصميم التقارير بمرونة.
مثال على استخدام pdf-reports
التركيب:
pip install pdf-reports
هنا مثال بسيط على كيفية استخدام مكتبة pdf-reports:
from pdf_reports import PDFReport
# تعريف ملف القالب (template.pug)
template = """
doctype html
html
head
title= title
body
h1= title
p هذا هو تقرير نموذجي.
"""
# إنشاء مثيل تقرير PDF
report = PDFReport(template)
# تحديد السياق للقالب
context = {
'title': 'تقرير نموذجي'
}
# إنشاء PDF
pdf = report.generate(context, output='تقرير_نموذج.pdf')
البدء في إنشاء PDFs في Python
يقدم Python مجموعة واسعة من المكتبات القوية لإنشاء تقارير PDF. سواء كنت تنشئ فواتير، تقارير تجارية، أو ملخصات بيانات، تسمح هذه الأدوات بتحقيق التحديث التلقائي، تخصيص المستندات، وضمان توافق العلامة التجارية. اختر المكتبة التي تناسب احتياجاتك وابدأ بإنشاء PDFs احترافية اليوم!