توليد PDF في C# (.NET): دليل شامل للمكتبات

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

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

ابدأ الدورة

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



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



المكتبات الشائعة للعمل مع PDF في .NET



  • iTextSharp / iText 7 - واحدة من أقدم وأكثر المكتبات وظيفية. الإصدار المدفوع (iText 7) للاستخدام التجاري، ولكن يوجد إصدار قديم iTextSharp بترخيص LGPL.
  • PdfSharp / MigraDoc - مكتبة مجانية مفتوحة المصدر. مناسبة تمامًا للمستندات والتقارير البسيطة.
  • QuestPDF - مكتبة حديثة بواجهة Fluent API. مجانية للاستخدام التجاري (ترخيص MIT). تتيح إنشاء مستندات معقدة بأقل كود.
  • IronPDF - مكتبة مدفوعة، ولكنها توفر وظائف قوية جدًا: تحويل HTML إلى PDF، العمل مع النماذج، الحماية بكلمة مرور.
  • SelectPdf - أداة مدفوعة أخرى تدعم تحويل HTML إلى PDF مع العديد من الإعدادات.


تثبيت المكتبات عبر NuGet



يتم تثبيت جميع المكتبات بالطريقة القياسية عبر مدير الحزم NuGet. أمثلة التثبيت:



// لـ PdfSharpInstall-Package PdfSharp

// لـ QuestPDFInstall-Package QuestPDF

// لـ iTextSharp (الإصدار القديم)Install-Package iTextSharp.LGPLv2.Core


مثال 1: إنشاء PDF باستخدام PdfSharp



PdfSharp هو خيار ممتاز للمهام البسيطة. فيما يلي مثال لإنشاء مستند يحتوي على نص وجدول:



using PdfSharp.Pdf;using PdfSharp.Drawing;

class Program{ static void Main() { // إنشاء مستند PDF جديد PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page);

// رسم النص XFont font = new XFont("Arial", 14); gfx.DrawString("مرحبًا، عالم PDF!", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft);

// حفظ المستند document.Save("HelloWorld.pdf"); Console.WriteLine("تم إنشاء PDF!"); }}


مثال 2: توليد تقرير باستخدام QuestPDF



تقدم QuestPDF واجهة Fluent API أنيقة. لننشئ فاتورة بسيطة:



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

class Program{ static void Main() { Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header().Element(ComposeHeader); page.Content().Element(ComposeContent); page.Footer().AlignCenter().Text("الصفحة {0} من {1}", x => x.CurrentPageNumber(), x => x.TotalPages()); }); }).GeneratePdf("Invoice.pdf");

Console.WriteLine("تم إنشاء الفاتورة!"); }

static void ComposeHeader(IContainer container) { container.Row(row => { row.RelativeItem().Column(column => { column.Item().Text("فاتورة").Bold().FontSize(20); column.Item().Text($"التاريخ: {DateTime.Now:dd.MM.yyyy}"); }); row.ConstantItem(100).Image(Placeholders.Image(100, 100)); }); }

static void ComposeContent(IContainer container) { container.Table(table => { // رؤوس الجدول table.ColumnsDefinition(columns =>

توصيات