توليد PDF في JavaScript: مكتبة PDFKit

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

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

ابدأ الدورة
```html

ما هو PDFKit؟

PDFKit هي مكتبة قوية لإنشاء مستندات PDF بلغة JavaScript (Node.js). تتيح لك إنشاء ملفات PDF معقدة متعددة الصفحات تحتوي على نصوص وصور وجداول ورسومات متجهة وتعليقات توضيحية. تطبق PDFKit مواصفات PDF 1.7 بالكامل ولا تتطلب تبعيات خارجية، مما يجعلها الخيار الأمثل لتطبيقات الخادم على Node.js.

لماذا نحتاج إلى إنشاء PDF في JavaScript؟

إنشاء PDF على جانب الخادم مطلوب في سيناريوهات مختلفة: إنشاء الفواتير والإيصالات، تكوين التقارير، إنشاء الشهادات، تصدير البيانات إلى تنسيق محمول. يسمح PDFKit بأتمتة هذه العمليات، حيث يعمل بالكامل في بيئة Node.js دون الحاجة إلى متصفح. يمكنك إنشاء المستندات ديناميكيًا، وإدراج البيانات من قاعدة البيانات، وإضافة العلامات المائية والتوقيعات.

تثبيت PDFKit

تثبيت المكتبة بسيط ويتم عبر npm:

npm install pdfkit

يوصى أيضًا بتثبيت pdfkit-table للعمل بسهولة مع الجداول أو svg-to-pdfkit لإدراج رسومات SVG.

الوظائف الأساسية لـ PDFKit

  • النصوص والخطوط: دعم Unicode، تضمين الخطوط، المحاذاة، التفاف النص، تقنين الأحرف.
  • الرسومات المتجهة: خطوط، مستطيلات، دوائر، منحنيات بيزير، تدرجات لونية.
  • الصور: إدراج JPEG، PNG، SVG (عبر إضافة).
  • الجداول: إنشاء جداول بعرض أعمدة تلقائي، وأنماط، وعناوين.
  • التعليقات التوضيحية: روابط، إشارات مرجعية، بيانات وصفية (المؤلف، الموضوع)، علامات مائية.
  • الصفحات: إضافة، ضبط الحجم، الاتجاه، الهوامش، الترقيم.

مثال على كود JavaScript (Node.js)

const PDFDocument = require('pdfkit');const fs = require('fs');

// إنشاء المستندconst doc = new PDFDocument();

// حفظ في ملفconst stream = fs.createWriteStream('output.pdf');doc.pipe(stream);

// إضافة عنوانdoc.fontSize(25).text('مرحبًا بالعالم!', 100, 100);

// إضافة نص مع التفافdoc.fontSize(12).text('هذا مثال على PDF تم إنشاؤه باستخدام PDFKit.', 100, 150);

// رسم خطdoc.moveTo(100, 200).lineTo(400, 200).stroke();

// إدراج صورة (إذا وجدت)// doc.image('path/to/image.png', 100, 250, {width: 200});

// صفحة جديدةdoc.addPage();doc.fontSize(20).text('الصفحة 2');

// إضافة جدول (عبر pdfkit-table)// doc.table({ headers: ['الاسم', 'العمر'], rows: [['آنا', 25], ['إيفان', 30]] });

// إنهاء المستندdoc.end();

stream.on('finish', () => { console.log('تم إنشاء PDF بنجاح');});

متى تستخدم PDFKit؟

PDFKit مناسب للمهام التي تتطلب تحكمًا كاملاً في محتوى PDF: من مستندات نصية بسيطة إلى تقارير معقدة تحتوي على رسوم بيانية وجداول وعلامات مائية. إنه أسرع وأخف وزنًا من Puppeteer إذا لم تكن هناك حاجة لتخطيط HTML. استخدم PDFKit إذا كنت تنشئ مستندات على خادم Node.js وتريد تجنب تشغيل المتصفح. للمهام البسيطة التي تتطلب تحويل HTML إلى PDF، سيكون Puppeteer أكثر ملاءمة.

```

توصيات