توليد PDF في C++: نظرة عامة على المكتبات والأدوات

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

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

ابدأ الدورة

توليد PDF في C++: نظرة عامة على المكتبات والأدوات



يعد توليد مستندات PDF من المهام الشائعة في تطوير البرمجيات. التقارير والفواتير والشهادات والوثائق - كلها تتطلب أداة موثوقة ومرنة لإنشاء PDF. في بيئة C++، توجد عدة حلول مجربة، لكل منها نقاط قوته. في هذه المقالة، سنستعرض المكتبات والأدوات الرئيسية التي ستساعدك في تنفيذ توليد PDF بلغة C++، وسنقدم أمثلة على الكود لكل منها.



1. PoDoFo - مكتبة قوية للعمل مع PDF



PoDoFo هي مكتبة متعددة المنصات بلغة C++، مصممة لإنشاء وتحرير وتحليل مستندات PDF. توفر تحكمًا كاملاً في بنية الملف، وتدعم الخطوط والصور والتعليقات التوضيحية والنماذج.



الإمكانيات الرئيسية:

  • إنشاء PDF من الصفر وتحرير المستندات الموجودة
  • دعم خطوط TrueType و Type1 وخطوط PDF القياسية
  • تضمين الصور (PNG، JPEG، TIFF)
  • العمل مع الجداول والمستندات متعددة الصفحات
  • دعم الضغط والتشفير


مثال على الكود: إنشاء PDF بسيط مع نص

#include <podofo/podofo.h>using namespace PoDoFo;

int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetPage(page);

// تعيين الخط PdfFont* font = document.CreateFont("Arial"); painter.SetFont(font, 12.0);

// رسم النص painter.DrawText("مرحبًا، عالم PDF!", 50, 700);

painter.FinishPage(); document.Save("output_podofo.pdf"); return 0;}


2. libharu - مكتبة خفيفة وسريعة



libharu (أو HPDF) هي مكتبة بسيطة بلغة C لتوليد PDF. على الرغم من أنها مكتوبة بلغة C، إلا أنها تعمل بشكل ممتاز مع C++ ولا تتطلب تبعيات معقدة. تعتبر libharu مثالية للمهام البسيطة التي لا تحتاج إلى دعم كامل لمعيار PDF.



الإمكانيات الرئيسية:

  • دعم النصوص والصور والخطوط والمستطيلات
  • العمل مع السيريلية عبر الترميزات
  • ضغط الصفحات
  • ترخيص Zlib (مجاني)


مثال على الكود: إنشاء PDF مع صورة

#include <hpdf.h>#include <stdio.h>

int main() { HPDF_Doc pdf = HPDF_New(NULL, NULL); HPDF_Page page = HPDF_AddPage(pdf); HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);

// تحميل الصورة HPDF_Image image = HPDF_LoadJpegImageFromFile(pdf, "example.jpg"); HPDF_Page_DrawImage(page, image, 50, 500, 200, 150);

// نص HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 14); HPDF_Page_TextOut(page, 50, 700, "مثال مع صورة"); HPDF_Page_EndText(page);

HPDF_SaveToFile(pdf, "output_libharu.pdf"); HPDF_Free(pdf); return 0;}


3. wkhtmltopdf - تحويل HTML إلى PDF



wkhtmltopdf ليست مكتبة بالمعنى التقليدي، بل هي أداة سطر أوامر مبنية على WebKit. ومع ذلك، يمكن استدعاؤها بسهولة من كود C++ عبر system() أو popen(). هذا هو الخيار المثالي إذا كنت بحاجة إلى تحويل قالب HTML إلى مستند PDF مع الحفاظ على الأنماط والتنسيق.



الإمكانيات الرئيسية:

  • دعم CSS و JavaScript والجداول والصور
  • ضبط الهوامش والاتجاه والتذييلات والرؤوس
  • جودة عرض عالية
  • سهولة التكامل


مثال على الكود: استدعاء wkhtmltopdf من C++

#include <cstdlib>#include <string>

int main() { std::string input = "report.html"; std::string output = "report.pdf"; std::string

توصيات