Go (Golang) में PDF रिपोर्ट जनरेशन: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
Go (Golang) एक आधुनिक कंपाइल की जाने वाली भाषा है जो उच्च-लोड सर्वर एप्लिकेशन, माइक्रोसर्विसेज़ और कमांड-लाइन उपयोगिताओं के निर्माण के लिए आदर्श है। वेब डेवलपमेंट में एक सामान्य कार्य PDF प्रारूप में रिपोर्ट तैयार करना है: चालान, इनवॉइस, विश्लेषणात्मक डैशबोर्ड या प्रमाणपत्र। इस लेख में, हम Go पर PDF के साथ काम करने के लिए तीन लोकप्रिय लाइब्रेरीज़, उनकी क्षमताओं की समीक्षा करेंगे और काम करने वाले कोड उदाहरण प्रस्तुत करेंगे।
PDF जनरेशन के लिए Go क्यों?
Go कई लाभ प्रदान करता है: उच्च प्रदर्शन, तैनाती में सरलता (एक बाइनरी), अंतर्निहित समवर्ती समर्थन और समृद्ध मानक लाइब्रेरी। PDF जनरेशन के लिए भारी रनटाइम (जैसे Java या .NET) स्थापित करने की आवश्यकता नहीं है, जो Go समाधानों को कॉम्पैक्ट और तेज़ बनाता है। हालाँकि, Python के विपरीत, जहाँ ReportLab जैसी शक्तिशाली लाइब्रेरीज़ हैं, Go के लिए PDF इकोसिस्टम अधिक विविध है, और टूल का चुनाव रिपोर्ट की जटिलता पर निर्भर करता है।
1. gofpdf — बुनियादी PDF जनरेशन
gofpdf प्रसिद्ध PHP लाइब्रेरी FPDF का एक पोर्ट है। यह 'स्क्रैच' से PDF दस्तावेज़ बनाने की अनुमति देता है: टेक्स्ट, इमेज, लाइन्स, टेबल और फ़ॉन्ट जोड़ना। लाइब्रेरी HTML टेम्पलेट्स का समर्थन नहीं करती है, इसलिए सभी मार्कअप प्रोग्रामेटिक रूप से सेट किए जाते हैं।
स्थापना:
go get github.com/jung-kurt/gofpdfउदाहरण: एक सरल चालान बनाना
package main
import ( "github.com/jung-kurt/gofpdf")
func main() { pdf := gofpdf.New("P", "mm", "A4", "") pdf.AddPage() pdf.SetFont("Arial", "B", 16) pdf.Cell(40, 10, "चालान संख्या 123") pdf.Ln(12) pdf.SetFont("Arial", "", 12) pdf.Cell(40, 10, "दिनांक: 2024-01-15") pdf.Ln(10) pdf.Cell(40, 10, "उत्पाद: लैपटॉप") pdf.Ln(10) pdf.Cell(40, 10, "राशि: 50,000 रुपये") err := pdf.OutputFileAndClose("invoice.pdf") if err != nil { panic(err) }}लाभ: हल्का वजन, पोजिशनिंग पर पूर्ण नियंत्रण, TTF फ़ॉन्ट के माध्यम से Unicode समर्थन।
नुकसान: HTML के लिए अंतर्निहित समर्थन का अभाव, जटिल लेआउट बनाते समय कठिनाई।
2. maroto — सरलीकृत रिपोर्ट निर्माण
Maroto gofpdf के ऊपर बनाया गया है, लेकिन रिपोर्ट बनाने के लिए एक उच्च-स्तरीय API प्रदान करता है। आप 'ग्रिड', 'पंक्तियाँ', 'कॉलम', 'टेबल' जैसी अवधारणाओं के साथ काम करते हैं। यह CSS फ्रेमवर्क के साथ काम करने जैसा है।
स्थापना:
go get github.com/johnfercher/maroto/v2उदाहरण: डेटा के साथ तालिका
package main
import ( "github.com/johnfercher/maroto/v2/pkg/core" "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2")
func main() { m := maroto.NewMaroto(maroto.WithPageSize("A4")) m.RegisterHeader(func() { m.Row(20, func() { m.Col(12, func() { m.Text("बिक्री रिपोर्ट", props.Text{Bold: true, Size: 16}) }) }) })
headers := []string{"उत्पाद", "मात्रा", "मूल्य"} contents := [][]string{ {"लैपटॉप", "2", "100000"}, {"माउस", "5", "2500"}, }
m.Table(headers, contents, props.Table{}) document, _ := m.Generate() _ = document.Save("report.pdf")}लाभ: घोषणात्मक शैली, स्वचालित संरेखण, तालिकाओं और चार्ट के लिए अंतर्निहित समर्थन।
नुकसान: गैर-मानक लेआउट के लिए gofpdf की तुलना में कम लचीलापन।
3. wkhtmltopdf — HTML से PDF
यदि आपको HTML टेम्पलेट को PDF में बदलने की आवश्यकता है (उदाहरण के लिए, CSS शैलियों के साथ), तो wkhtmltopdf का उपयोग करें — wkhtmltopdf उपयोगिता (WebKit) के ऊपर एक रैपर। यह शुद्ध Go लाइब्रेरी नहीं है, लेकिन यह रिपोर्ट डिज़ाइन के लिए HTML/CSS की पूरी शक्ति का उपयोग करने की अनुमति देता है।
पुस्तकालय में भी
Go (Golang) में CSV के साथ काम करना: पार्सिंग और लेखन के लिए संपूर्ण गाइड
जावा में मशीन लर्निंग: मॉडल विकास के लिए लाइब्रेरीज़ का अवलोकन