توليد PDF في TypeScript: المكتبات والأدوات وأمثلة الكود

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

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

ابدأ الدورة

توليد PDF في TypeScript: دليل شامل للمطورين



يعد إنشاء مستندات PDF من المهام المطلوبة في تطوير الويب الحديث. في لغة TypeScript، توجد عدة مكتبات قوية تسمح بتوليد PDF سواء على جانب العميل أو على الخادم (Node.js). في هذه المقالة، سنستعرض ثلاث أدوات رئيسية: PDFKit وjsPDF وpdf-lib، بالإضافة إلى عرض أمثلة عملية لاستخدامها.



لماذا توليد PDF في TypeScript؟

يضيف TypeScript كتابة ثابتة، وهو أمر مهم بشكل خاص عند العمل مع مستندات ذات بنية معقدة. يتيح استخدام TypeScript لتوليد PDF ما يلي:

  • تجنب أخطاء الأنواع عند تشكيل الجداول والأنماط
  • تبسيط إعادة هيكلة المشاريع الكبيرة
  • دمج توليد PDF مع مشاريع TypeScript الحالية (React، Angular، Node.js)


نظرة عامة على مكتبات توليد PDF



1. PDFKit (Node.js)

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



import PDFDocument from 'pdfkit';import fs from 'fs';

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));

doc.fontSize(24).text('مرحبًا بالعالم!', 100, 100);doc.fontSize(12).text('هذا PDF تم إنشاؤه باستخدام PDFKit وTypeScript', 100, 150);doc.end();


الميزات:

  • يعمل فقط في Node.js (غير مناسب للمتصفح)
  • يتطلب إعدادًا يدويًا للخطوط للأحرف السيريلية
  • يدعم التخطيطات المعقدة والجداول والرسومات


2. jsPDF (المتصفح وNode.js)

jsPDF هي مكتبة متعددة الاستخدامات تعمل في كل من المتصفح والخادم. هي أسهل في التعلم، ولكن لها قيود على تعقيد التخطيطات.



import { jsPDF } from 'jspdf';

const doc = new jsPDF();doc.text('توليد PDF باستخدام TypeScript', 10, 10);doc.save('document.pdf');


الميزات:

  • واجهة برمجة تطبيقات بسيطة للمستندات الأساسية
  • دعم الأحرف السيريلية (يتطلب توصيل الخطوط عبر addFont)
  • يمكن العمل مع canvas وعناصر HTML


3. pdf-lib (حديث ومرن)

pdf-lib هي مكتبة خفيفة الوزن مع دعم ممتاز لـ TypeScript. تسمح بإنشاء PDF من الصفر أو تحرير المستندات الموجودة.



import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';

async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage(); const font = await doc.embedFont(StandardFonts.Helvetica);

page.drawText('PDF مع pdf-lib', { x: 50, y: 700, size: 24, font, color: rgb(0, 0, 0), });

const pdfBytes = await doc.save(); // حفظ أو إرسال}


الميزات:

  • دعم كامل لـ TypeScript (الأنواع مضمنة)
  • يمكن العمل في المتصفح وNode.js
  • يسمح بتعديل ملفات PDF الموجودة
  • يتطلب عملًا يدويًا مع الخطوط للأحرف السيريلية


مقارنة المكتبات

توصيات

الخاصية PDFKit jsPDF pdf-lib
بيئة التشغيل Node.js المتصفح + Node.js المتصفح + Node.js
دعم TypeScript جزئي (عبر @types) جزئي كامل
الأحرف السيريلية تتطلب خطوطًا تتطلب خطوطًا تتطلب خطوطًا
التخطيطات المعقدة ممتاز