توليد PDF في C# (.NET): نظرة عامة على المكتبات والأدوات

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

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

ابدأ الدورة

توليد PDF في C# (.NET): نظرة شاملة على المكتبات والأدوات



إنشاء مستندات PDF هي إحدى المهام الأكثر شيوعًا في التطوير المؤسسي. التقارير، الفواتير، الإشعارات، العقود - كلها تتطلب أداة موثوقة للتوليد. في نظام C# (.NET) البيئي، توجد عدة مكتبات قوية، لكل منها خصائصها. في هذه المقالة، سنستعرض الخيارات الأكثر شيوعًا، مميزاتها وعيوبها، وسنقدم أمثلة على الكود.



1. iTextSharp / iText 7 لـ .NET



iText هو المعيار الفعلي في عالم توليد PDF. المكتبة موجودة منذ عام 2000 وتتطور بنشاط. بالنسبة لـ .NET، الإصدار المتاح هو iText 7 (حزمة NuGet itext7).



الإمكانيات:

  • تحكم كامل في المحتوى: النصوص، الجداول، الصور، التعليقات التوضيحية.
  • العمل مع النماذج (AcroForms)، التوقيعات الرقمية، التشفير.
  • دعم PDF/A (التخزين الأرشيفي).
  • أداء عالٍ.


العيوب:

  • API معقد (عمل منخفض المستوى مع الإحداثيات).
  • الاستخدام التجاري يتطلب ترخيصًا مدفوعًا (AGPL للمشاريع مفتوحة المصدر).


مثال لإنشاء PDF بسيط:

using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;

public void CreatePdf(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("مرحبًا بالعالم!")); document.Add(new Paragraph("هذا PDF تم إنشاؤه باستخدام iText 7.")); }}


2. PDFsharp



PDFsharp هي مكتبة خفيفة الوزن مفتوحة المصدر لـ .NET (يوجد أيضًا إصدار لـ GDI+). مناسبة تمامًا للمهام البسيطة: إنشاء مستندات تحتوي على نصوص، جداول، صور.



الإمكانيات:

  • API بسيط وبديهي.
  • دعم الخطوط (بما في ذلك السيريلية).
  • العمل مع العناصر الرسومية البدائية (خطوط، أشكال).
  • مجانية (ترخيص MIT).


العيوب:

  • دعم محدود للعناصر المعقدة (النماذج، الإشارات المرجعية).
  • أبطأ من iText في الأحجام الكبيرة.


مثال:

using PdfSharp.Pdf;using PdfSharp.Drawing;

public void CreatePdf(string filePath){ using (var document = new PdfDocument()) { var page = document.AddPage(); using (var gfx = XGraphics.FromPdfPage(page)) { var font = new XFont("Arial", 20, XFontStyle.Regular); gfx.DrawString("مرحبًا بالعالم!", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}


3. QuestPDF



QuestPDF هي مكتبة حديثة مع API سلس (fluent API)، مستوحاة من مفهوم "التخطيط أولاً" (layout-first). تسمح بوصف هيكل المستند بشكل تصريحي، مما يبسط بشكل كبير إنشاء التخطيطات المعقدة.



الإمكانيات:

  • أسلوب تصريحي (مثل WPF أو HTML).
  • تقسيم تلقائي للصفحات (pagination).
  • دعم الجداول، الرؤوس، التذييلات.
  • إصدار مجاني مع قيود (حتى 10 صفحات).


العيوب:

  • الإصدار المجاني محدود.
  • مرونة أقل مقارنة بـ iText (صعوبة في رسم الرسومات المخصصة).


مثال:

using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;

public void CreatePdf(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(30); page.Content().Column(col => { col.Item().Text("مرحبًا بالعالم!").FontSize(20); col.Item().Text("هذا QuestPDF.").FontSize(14); }); });

توصيات