C++ में PDF जनरेशन: लाइब्रेरीज़ और टूल्स का अवलोकन
PDF दस्तावेज़ जनरेट करना C++ में सॉफ्टवेयर विकास में एक सामान्य कार्य है। सरल रिपोर्ट बनाने से लेकर तालिकाओं, छवियों और ग्राफिक्स के साथ जटिल बहु-पृष्ठ दस्तावेज़ बनाने तक। इस लेख में, हम C++ पर PDF के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरीज़ और टूल्स, उनकी क्षमताओं, फायदे और नुकसान के साथ-साथ व्यावहारिक कोड उदाहरणों की समीक्षा करेंगे।
C++ में PDF जनरेशन की आवश्यकता क्यों?
PDF (Portable Document Format) एक क्रॉस-प्लेटफ़ॉर्म प्रारूप है जो डिवाइस और ऑपरेटिंग सिस्टम की परवाह किए बिना दस्तावेज़ के लेआउट को संरक्षित करता है। C++ में, PDF जनरेशन की आवश्यकता निम्नलिखित के लिए होती है:
- व्यावसायिक अनुप्रयोगों में रिपोर्ट और चालान बनाना
- टेम्पलेट्स से दस्तावेज़ीकरण तैयार करना
- डेटाबेस से डेटा निर्यात करना
- लेखा प्रणालियों में रसीदें और चालान जनरेट करना
C++ में PDF के साथ काम करने के लिए मुख्य लाइब्रेरीज़
1. libharu (HARU PDF)
PDF जनरेशन के लिए सबसे लोकप्रिय और उपयोग में आसान लाइब्रेरीज़ में से एक। यह C में लिखी गई है, लेकिन इसमें एक उत्कृष्ट C++ इंटरफ़ेस है। यह शुरू से PDF दस्तावेज़ बनाने, टेक्स्ट, चित्र, रेखाएँ, आयत, एनोटेशन जोड़ने की अनुमति देता है।
विशेषताएँ:
- छोटा आकार और उच्च प्रदर्शन
- TrueType फ़ॉन्ट्स के लिए समर्थन
- पृष्ठ संपीड़न
- चित्रों के साथ काम (JPEG, PNG)
- लाइसेंस: ZLIB/Libpng (मुफ्त)
सरल PDF जनरेशन का उदाहरण:
#include <hpdf.h>#include <stdio.h>
int main() { HPDF_Doc pdf = HPDF_New(NULL, NULL); HPDF_Page page = HPDF_AddPage(pdf); // A4 पृष्ठ आकार सेट करें HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE); // टेक्स्ट जोड़ें HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 24); HPDF_Page_TextOut(page, 100, 500, "नमस्ते, C++ पर PDF दुनिया!"); HPDF_Page_EndText(page); // दस्तावेज़ सहेजें HPDF_SaveToFile(pdf, "output.pdf"); HPDF_Free(pdf); return 0;}2. PoDoFo
PDF के साथ काम करने के लिए एक आधुनिक ओपन-सोर्स C++ लाइब्रेरी। यह न केवल निर्माण बल्कि मौजूदा PDF फ़ाइलों के संपादन का भी समर्थन करता है। अच्छी तरह से प्रलेखित और सक्रिय रूप से समर्थित।
विशेषताएँ:
- शुद्ध C++ कोड (आधुनिक मानक)
- Unicode और सिरिलिक लिपि के लिए समर्थन
- फ़ॉर्म, बुकमार्क, मेटाडेटा के साथ काम
- PDF पढ़ना और लिखना
- लाइसेंस: LGPL
तालिका के साथ PDF बनाने का उदाहरण:
#include <podofo/podofo.h>
using namespace PoDoFo;
int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetCanvas(*page); // तालिका बनाएँ painter.DrawRect(50, 700, 500, 30); painter.DrawText(60, 710, "तालिका शीर्षक"); // सहेजें painter.FinishPage(); document.Save("table.pdf"); return 0;}3. wkhtmltopdf
शास्त्रीय अर्थों में लाइब्रेरी नहीं, बल्कि एक कमांड-लाइन उपयोगिता है जो HTML को PDF में बदलने के लिए WebKit इंजन का उपयोग करती है। C++ में, इसे system() के माध्यम से कॉल किया जा सकता है या रैपर लाइब्रेरी का उपयोग किया जा सकता है।
विशेषताएँ:
- HTML टेम्पलेट्स से PDF जनरेशन के लिए आदर्श
- CSS, JavaScript, SVG के लिए समर्थन
- गुणवत्तापूर्ण लेआउट (ब्राउज़र की तरह)
- हेडर/फुटर, विषय-सूची, पृष्ठ क्रमांकन
- लाइसेंस: LGPLv3
C++ से कॉल करने का उदाहरण:
#include <cstdlib>
int main() { // HTML फ़ाइल को PDF में बदलें int result = std::system("w