Go (Golang) में PDF जनरेशन: लाइब्रेरी और टूल्स का अवलोकन
\n\nPDF दस्तावेज़ बनाना वेब डेवलपमेंट में सामान्य कार्यों में से एक है। Go (Golang) इकोसिस्टम में कई परिपक्व लाइब्रेरी हैं जो सरल रिपोर्ट से लेकर तालिकाओं, ग्राफिक्स और फ़ॉन्ट्स के साथ जटिल बहु-पृष्ठ दस्तावेज़ों तक PDF जनरेट करने की अनुमति देती हैं। इस लेख में, हम मुख्य टूल्स, उनकी क्षमताओं की समीक्षा करेंगे और व्यावहारिक कोड उदाहरण प्रस्तुत करेंगे।
\n\nPDF जनरेशन के लिए Go क्यों?
\nGo एक कंपाइल्ड भाषा है जिसमें उत्कृष्ट प्रदर्शन और सरल कंकरेंसी मॉडल है। PDF जनरेशन कार्यों के लिए इसका अर्थ है:
\n- \n
- बड़ी मात्रा में डेटा का तेज़ प्रसंस्करण \n
- वेब सर्वर (net/http) के साथ आसान एकीकरण \n
- कई दस्तावेज़ों के जनरेशन को समानांतर करने की क्षमता
- कोई बाहरी निर्भरता नहीं (बाइनरी में सब कुछ शामिल है)
Go में PDF के साथ काम करने के लिए मुख्य लाइब्रेरी
\n\n1. gofpdf — सरल और लोकप्रिय लाइब्रेरी
\ngofpdf प्रसिद्ध PHP लाइब्रेरी FPDF का Go पोर्ट है। यह बुनियादी तत्वों: टेक्स्ट, लाइन्स, आयत, इमेज और टेबल के साथ PDF बनाने के लिए एक सरल API प्रदान करता है। लाइब्रेरी को बाहरी निर्भरता की आवश्यकता नहीं है और फ़ॉन्ट एम्बेड करके Unicode का समर्थन करती है।
\n\ngofpdf के साथ एक सरल PDF बनाने का उदाहरण:
\npackage main\n\nimport (\n "github.com/jung-kurt/gofpdf"\n)\n\nfunc main() {\n pdf := gofpdf.New("P", "mm", "A4", "")\n pdf.AddPage()\n pdf.SetFont("Arial", "B", 16)\n pdf.Cell(40, 10, "नमस्ते, दुनिया!")\n pdf.OutputFileAndClose("hello.pdf")\n}\n\n\ngofpdf की मुख्य विशेषताएं:
\n- \n
- UTF-8 समर्थन (TrueType फ़ॉन्ट एम्बेड करना आवश्यक) \n
- स्वचालित पृष्ठ विराम \n
- वेक्टर ग्राफिक्स (लाइन्स, कर्व्स, फिल्स) \n
- इमेज एम्बेड करना (JPEG, PNG, GIF) \n
- डायनामिक डेटा के साथ तालिकाएं \n
2. UniPDF — वाणिज्यिक शक्तिशाली लाइब्रेरी
\nUniPDF (पूर्व में FoxyUtils) Go में PDF के साथ काम करने के लिए एक पेशेवर समाधान है। लाइब्रेरी का स्रोत कोड खुला है, लेकिन वाणिज्यिक उपयोग के लिए लाइसेंस की आवश्यकता है। UniPDF न केवल PDF बनाने, बल्कि संपादन, रूपांतरण और डेटा निष्कर्षण का भी समर्थन करता है।
\n\nUniPDF के साथ PDF बनाने का उदाहरण:
\npackage main\n\nimport (\n "os"\n "github.com/unidoc/unipdf/v3/creator"\n)\n\nfunc main() {\n c := creator.New()\n c.NewPage()\n \n // टेक्स्ट जोड़ना\n text := c.NewStyledParagraph()\n text.Append("UniPDF दस्तावेज़ का उदाहरण")\n text.SetFontSize(18)\n c.Draw(text)\n \n // सहेजना\n c.WriteToFile("unipdf_example.pdf")\n}\n\n\nUniPDF की अनूठी विशेषताएं:
\n- \n
- मौजूदा PDF का पूर्ण पार्सिंग और संपादन \n
- फॉर्म, एनोटेशन और बुकमार्क का समर्थन \n
- HTML को PDF में रूपांतरण \n
- डिजिटल हस्ताक्षर के साथ काम करना \n
- टेक्स्ट और इमेज का निष्कर्षण \n
3. Maroto — विज़ुअल घटकों पर आधारित PDF जनरेटर
\nMaroto gofpdf के ऊपर बनाया गया है और "ग्रिड" (grid) की अवधारणा का उपयोग करके एक उच्च-स्तरीय दृष्टिकोण प्रदान करता है। यह रिपोर्ट, चालान और अन्य संरचित दस्तावेज़ बनाने के लिए सुविधाजनक है।
\n\nMaroto के साथ उदाहरण:
\npackage main\n\nimport (\n "fmt"\n "github.com/johnfercher/maroto/v2/pkg/consts/align"\n "github.com/johnfercher/maroto/v2/pkg/consts/fontstyle"\n "github.com/johnfercher/maroto/v2/pkg/core"\n "github.com/johnfercher/maroto/v2/pkg/props"\n "github.com/johnfercher/maroto/v2"\n)\n\nfunc main() {\n m := maroto.New()\n m.Row(20, func() {\n m.Col(12, func() {\n m.Text("चालान #123", props.Text{\n Style: fontstyle.Bold,\n Align: align.Center,\n })\n })\n })\n \n document, err := m.Generate()\n if err != nil {\n