C++ में PDF जनरेशन: लाइब्रेरी और टूल्स का अवलोकन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में PDF जनरेशन: लाइब्रेरी और टूल्स का अवलोकन



PDF दस्तावेज़ जनरेट करना सॉफ्टवेयर विकास में एक सामान्य कार्य है। रिपोर्ट, चालान, प्रमाणपत्र, दस्तावेज़ीकरण - इन सभी के लिए PDF बनाने के लिए एक विश्वसनीय और लचीले टूल की आवश्यकता होती है। C++ इकोसिस्टम में कई सिद्ध समाधान मौजूद हैं, जिनमें से प्रत्येक की अपनी ताकत है। इस लेख में, हम मुख्य लाइब्रेरी और टूल्स पर विचार करेंगे जो C++ पर PDF जनरेशन को लागू करने में आपकी मदद करेंगे, और उनमें से प्रत्येक के लिए कोड उदाहरण भी प्रस्तुत करेंगे।



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) PDF जनरेशन के लिए C में एक न्यूनतम लाइब्रेरी है। इस तथ्य के बावजूद कि यह 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 पर आधारित एक कमांड-लाइन उपयोगिता है। हालाँकि, इसे system() या popen() के माध्यम से C++ कोड से आसानी से कॉल किया जा सकता है। यह एक आदर्श विकल्प है यदि आपको HTML टेम्पलेट को शैलियों और लेआउट को संरक्षित करते हुए PDF दस्तावेज़ में बदलने की आवश्यकता है।



मुख्य विशेषताएं:

  • CSS, JavaScript, तालिकाओं और इमेज का समर्थन
  • मार्जिन, ओरिएंटेशन, हेडर और फुटर का कॉन्फ़िगरेशन
  • उच्च गुणवत्ता वाला रेंडरिंग
  • एकीकरण में आसानी


कोड उदाहरण: C++ से wkhtmltopdf को कॉल करना

#include <cstdlib>#include <string>

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

अनुशंसाएँ