C++ में PDF जनरेशन: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
\n\nPDF दस्तावेज़ जनरेट करना एंटरप्राइज़ एप्लिकेशन, रिपोर्टिंग सिस्टम और दस्तावेज़ प्रबंधन में एक सामान्य कार्य है। हालाँकि C++ में PDF प्रारूप के लिए अंतर्निहित समर्थन नहीं है, फिर भी कई परिपक्व लाइब्रेरीज़ मौजूद हैं जो PDF फ़ाइलें बनाने, संपादित करने और रेंडर करने की अनुमति देती हैं। इस लेख में, हम तीन लोकप्रिय टूल पर चर्चा करेंगे: libharu, PoDoFo और wkhtmltopdf। प्रत्येक के लिए, हम कोड का एक उदाहरण देंगे और मुख्य विशेषताओं का वर्णन करेंगे।
\n\n1. libharu — हल्की और तेज़ PDF जनरेशन
\n\nlibharu (Haru PDF) एक क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी है जो शुद्ध C में लिखी गई है और C++ प्रोजेक्ट के लिए उपयुक्त है। यह बाहरी ग्राफ़िकल लाइब्रेरीज़ पर निर्भर नहीं करती, Unicode (UTF-8) का समर्थन करती है, फ़ॉन्ट (TrueType) एम्बेड करती है और इमेज (JPEG, PNG) के साथ काम करती है। मुख्य उपयोग — प्रोग्रामेटिक रूप से 'स्क्रैच' से दस्तावेज़ बनाना।
\n\nस्थापना
\nस्रोत कोड GitHub से डाउनलोड करें और CMake के माध्यम से बिल्ड करें:
\nmkdir build && cd build\ncmake .. -DLIBHPDF_SHARED=ON\nmake\nsudo make install\n\nउदाहरण: टेक्स्ट के साथ एक सरल PDF बनाना
\n#include <hpdf.h>\n#include <cstdio>\n\nint main() {\n HPDF_Doc pdf = HPDF_New(NULL, NULL);\n HPDF_Page page = HPDF_AddPage(pdf);\n HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);\n\n // फ़ॉन्ट\n const char* font_name = HPDF_LoadTTFontFromFile(pdf, "arial.ttf", HPDF_TRUE);\n HPDF_Font font = HPDF_GetFont(pdf, font_name, "UTF-8");\n HPDF_Page_SetFontAndSize(page, font, 14);\n\n // टेक्स्ट\n HPDF_Page_BeginText(page);\n HPDF_Page_TextOut(page, 50, 750, "नमस्ते, दुनिया! C++ से PDF.");\n HPDF_Page_EndText(page);\n\n HPDF_SaveToFile(pdf, "output.pdf");\n HPDF_Free(pdf);\n printf("PDF बनाया गया: output.pdf\\n");\n return 0;\n}\n\nlibharu की विशेषताएँ
\n- \n
- बहु-पृष्ठ दस्तावेज़ बनाना \n
- वेक्टर ग्राफ़िक्स (रेखाएँ, आयत, वक्र) \n
- JPEG/PNG इमेज एम्बेड करना \n
- बुकमार्क (आउटलाइन) और एनोटेशन का समर्थन \n
- पृष्ठ सामग्री का संपीड़न \n
2. PoDoFo — PDF के साथ उन्नत कार्य
\n\nPoDoFo एक C++ लाइब्रेरी है जो PDF संरचना पर पूर्ण नियंत्रण प्रदान करती है। यह न केवल दस्तावेज़ बनाने की अनुमति देती है, बल्कि मौजूदा दस्तावेज़ों को संपादित करने, टेक्स्ट निकालने, मेटाडेटा और एन्क्रिप्शन को प्रबंधित करने की भी अनुमति देती है। PoDoFo CMake का उपयोग करता है और न्यूनतम कॉन्फ़िगरेशन की आवश्यकता होती है।
\n\nस्थापना (Ubuntu/Debian)
\nsudo apt install libpodofo-dev\n\nउदाहरण: पृष्ठ पर टेक्स्ट जोड़ना
\n#include <podofo/podofo.h>\nusing namespace PoDoFo;\n\nint main() {\n PdfMemDocument document;\n document.SetPdfVersion(PdfVersion::V1_4);\n document.GetMetadata().SetTitle("PoDoFo दस्तावेज़");\n\n PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4));\n PdfPainter painter;\n painter.SetCanvas(*page);\n\n PdfFont* font = document.CreateFont("Arial", false, false, false);\n font->SetFontSize(16);\n painter.SetFont(font);\n painter.DrawText(50, 700, "PoDoFo के साथ जनरेट किया गया!");\n\n painter.FinishDrawing();\n document.Save("podofo_example.pdf");\n return 0;\n}\n\nPoDoFo की मुख्य विशेषताएँ
\n- \n
- PDF/A (आर्काइवल फ़ॉर्मेट) का समर्थन \n
- एन्क्रिप्शन और पासवर्ड सेट करना \n
- PDF से टेक्स्ट और इमेज निकालना \n
- फ़ॉर्म (AcroForms) के साथ कार्य \n
- मौजूदा PDF को संपादित करना (पृष्ठ जोड़ना/हटाना) \n
3. wkhtmltopdf — C++ के माध्यम से HTML को PDF में
\n\nwkhtmltopdf एक कंसोल उपयोगिता है जो WebKit इंजन का उपयोग करके HTML पृष्ठों को PDF में परिवर्तित करती है। C++ के लिए, आप इसे system() या <