توليد تقارير PDF باستخدام TypeScript: نظرة عامة على المكتبات وأمثلة عملية
يعد توليد مستندات PDF من المهام الأساسية في تطوير تطبيقات الويب الحديثة والأنظمة المؤسسية. التقارير والفواتير والشهادات ولوحات المعلومات التحليلية - كلها تتطلب أداة مريحة ومرنة لإنشاء PDF على جانب الخادم أو العميل. يوفر TypeScript، كإضافة صارمة الكتابة فوق JavaScript، إمكانيات ممتازة لتنفيذ هذه الوظيفة. في هذه المقالة، سنستعرض المكتبات الرئيسية لتوليد PDF باستخدام TypeScript، وميزاتها، ومزاياها، وأمثلة على استخدامها.
لماذا استخدام TypeScript لتوليد PDF؟
يضيف TypeScript الكتابة الثابتة، مما يبسط بشكل كبير تطوير أنظمة توليد التقارير المعقدة. توفر بيئة التطوير المتكاملة (IDE) الإكمال التلقائي والتحقق من الأنواع وإعادة الهيكلة، مما يقلل من عدد الأخطاء. بالإضافة إلى ذلك، يسهل صيانة وتوسيع كود TypeScript، خاصة في المشاريع الكبيرة.
المكتبات الرئيسية لتوليد PDF باستخدام TypeScript
دعنا نستعرض ثلاث أدوات شائعة: PDFKit و jsPDF و Puppeteer. لكل منها مجالها وميزاتها الخاصة.
1. PDFKit
PDFKit هي مكتبة قوية لإنشاء مستندات PDF على Node.js. وهي مكتوبة بالكامل بلغة JavaScript وتدعم TypeScript من خلال تعريفات الأنواع (@types/pdfkit). تسمح PDFKit بإنشاء مستندات من الصفر، وإضافة النصوص والصور والرسومات المتجهة والجداول وغير ذلك الكثير.
المزايا:
- تحكم كامل في محتوى وهيكل PDF.
- دعم الخطوط والألوان والشفافية.
- دعم مدمج للسيريلية (عند توصيل الخطوط).
- أداء عالٍ.
مثال على استخدام PDFKit مع TypeScript:
import PDFDocument from 'pdfkit';import * as fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('report.pdf'));
doc.fontSize(25).text('تقرير المبيعات', 100, 100);doc.fontSize(12).text('التاريخ: 2025-03-15', 100, 150);doc.moveDown();
doc.text('الاسم: لابتوب');doc.text('الكمية: 10');doc.text('المبلغ: 1,200,000 روبل');
doc.end();للعمل بشكل صحيح مع السيريلية، يجب توصيل خط، على سبيل المثال:
doc.registerFont('Roboto', 'fonts/Roboto-Regular.ttf');doc.font('Roboto').text('مرحباً بالعالم!');2. jsPDF
jsPDF هي مكتبة عميل لتوليد PDF مباشرة في المتصفح. كما تحتوي على أنواع لـ TypeScript. تعتبر jsPDF مثالية لإنشاء تقارير وفواتير وبوالص بسيطة دون معالجة من جانب الخادم.
المزايا:
- تعمل على جانب العميل (لا حاجة لخادم).
- إعداد واستخدام بسيط.
- دعم تخطيط HTML عبر الإضافة
html2canvas.
مثال على استخدام jsPDF مع TypeScript:
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.setFontSize(18);doc.text('تقرير المشروع', 10, 20);doc.setFontSize(12);doc.text('الإنجاز: 75%', 10, 40);doc.text('الميزانية: 2,500,000 روبل', 10, 50);
doc.save('project-report.pdf');هام: لا تدعم jsPDF السيريلية "خارج الصندوق". للعمل مع النص العربي، يجب تحميل الخطوط عبر addFileToVFS و addFont.
3. Puppeteer
Puppeteer هي مكتبة للتحكم في متصفح Chrome/Chromium عبر بروتوكول DevTools. تسمح بتوليد PDF من HTML/CSS بأقصى دقة، حيث تستخدم العرض الفعلي للمتصفح. يحتوي Puppeteer على أنواع TypeScript رسمية.
المزايا:
- دعم كامل لـ CSS و Flexbox و Grid والسيريلية.