C++ में PDF रिपोर्ट जनरेशन: libHaru लाइब्रेरी

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

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

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

C++ में libHaru के साथ PDF रिपोर्ट जनरेशन

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

libHaru एक क्रॉस-प्लेटफ़ॉर्म ओपन-सोर्स लाइब्रेरी है, जो C में लिखी गई है और इसमें सुविधाजनक C++ इंटरफ़ेस है। यह बिना किसी बाहरी डिपेंडेंसी के PDF दस्तावेज़ बनाने की अनुमति देती है (Ghostscript, LaTeX या अन्य सिस्टम की आवश्यकता नहीं)। लाइब्रेरी टेक्स्ट (एन्कोडिंग के माध्यम से Unicode सहित), इमेज एम्बेड करना (PNG, JPEG), लाइनें, आयत, वृत्त बनाना, साथ ही एनोटेशन और हाइपरलिंक बनाने का समर्थन करती है।

इंस्टॉलेशन और कनेक्शन

libHaru के सोर्स कोड GitHub पर आधिकारिक रिपॉजिटरी से डाउनलोड किए जा सकते हैं। बिल्ड के लिए CMake का उपयोग किया जाता है। Linux पर इंस्टॉलेशन का उदाहरण:

git clone https://github.com/libharu/libharu.git
cd libharu
mkdir build && cd build
cmake ..
make
sudo make install

इंस्टॉलेशन के बाद, अपने प्रोजेक्ट में हेडर फ़ाइल और लाइब्रेरी को शामिल करें:

#include <hpdf.h>

// लिंकिंग: -lhpdf

सरल PDF दस्तावेज़ बनाना

एक बुनियादी उदाहरण देखें — एक पेज और टेक्स्ट के साथ दस्तावेज़ बनाना। C++ कोड:

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

int main() {
    HPDF_Doc pdf = HPDF_New(NULL, NULL);
    if (!pdf) {
        fprintf(stderr, "PDF बनाने में त्रुटि\n");
        return 1;
    }

    HPDF_Page page = HPDF_AddPage(pdf);
    HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE);

    HPDF_Font font = HPDF_GetFont(pdf, "Helvetica", NULL);
    HPDF_Page_SetFontAndSize(page, font, 20);

    HPDF_Page_BeginText(page);
    HPDF_Page_TextOut(page, 100, 400, "नमस्ते, दुनिया! यह C++ में PDF रिपोर्ट है।");
    HPDF_Page_EndText(page);

    HPDF_SaveToFile(pdf, "output.pdf");
    HPDF_Free(pdf);
    printf("PDF बन गया: output.pdf\n");
    return 0;
}

यह कोड एक A4 लैंडस्केप शीट बनाता है, टेक्स्ट प्रिंट करता है (डिफ़ॉल्ट रूप से काला) और परिणाम सेव करता है। ध्यान दें: libHaru Helvetica जैसे फ़ॉन्ट में सीधे देवनागरी का समर्थन नहीं करता — हिंदी टेक्स्ट के लिए TrueType फ़ॉन्ट की आवश्यकता होगी, जैसा नीचे दिखाया गया है।

हिंदी टेक्स्ट और फ़ॉन्ट के साथ काम करना

देवनागरी को सही ढंग से प्रदर्शित करने के लिए, Unicode समर्थन वाला फ़ॉन्ट लोड करना आवश्यक है (जैसे Arial या Noto Sans Devanagari)। उदाहरण:

// TrueType फ़ॉन्ट लोड करें (फ़ाइल उपलब्ध होनी चाहिए)
const char* font_path = "/usr/share/fonts/truetype/NotoSansDevanagari-Regular.ttf";
HPDF_Font font = HPDF_GetFont(pdf, font_path, NULL);

// या UTF-8 एन्कोडिंग के साथ बिल्ट-इन फ़ॉन्ट का उपयोग करें
HPDF_UseUTFEncodings(pdf);
HPDF_Font font = HPDF_GetFont(pdf, "Helvetica", "UTF-8");

पहला तरीका अधिक विश्वसनीय है, लेकिन इसके लिए टार्गेट सिस्टम पर फ़ॉन्ट फ़ाइल का होना आवश्यक है। दूसरा तरीका केवल कुछ बिल्ट-इन फ़ॉन्ट के साथ काम करता है और देवनागरी के पूर्ण समर्थन की गारंटी नहीं देता।

टेबल और ग्राफिकल एलिमेंट बनाना

रिपोर्ट बनाने के लिए अक्सर टेबल बनाने की आवश्यकता होती है। libHaru लाइनें और आयत बनाने की अनुमति देता है:

HPDF_Page_SetLineWidth(page, 1);
HPDF_Page_SetRGBStroke(page, 0, 0, 0);

// आयत बनाएं (x, y, width, height)
HPDF_Page_Rectangle(page, 50, 500, 200, 30);
HPDF_Page_Stroke(page);

// लाइन बनाएं
HPDF_Page_MoveTo(page, 50, 500);
HPDF_Page_LineTo(page, 250, 500);
HPDF_Page_Stroke(page);

पूर्ण टेबल बनाने के लिए लाइनों और टेक्स्ट को जोड़ा जा सकता है। जटिल रिपोर्ट और डायनामिक डेटा के लिए, एक हेल्पर फंक्शन लिखना सुविधाजनक होता है जो स्ट्रिंग्स की एक ऐरे और कोऑर्डिनेट लेता है, फिर ग्रिड बनाता है और सेल्स भरता है।

इमेज एम्बेड करना

अनुशंसाएँ