Go (Golang) में PDF जनरेशन: लाइब्रेरीज़ और टूल्स का संपूर्ण अवलोकन
PDF दस्तावेज़ बनाना वेब डेवलपमेंट, रिपोर्टिंग ऑटोमेशन और इलेक्ट्रॉनिक दस्तावेज़ प्रबंधन में एक सामान्य कार्य है। Go (Golang) भाषा इस कार्य के लिए कई परिपक्व समाधान प्रदान करती है। इस लेख में, हम मुख्य लाइब्रेरीज़, उनकी क्षमताओं, उपयोग के उदाहरणों का विस्तार से विश्लेषण करेंगे और आपकी परियोजना के लिए उपयुक्त टूल चुनने में मदद करेंगे।
PDF जनरेशन के लिए Go क्यों?
Go संकलित भाषा के उच्च प्रदर्शन को विकास की सरलता के साथ जोड़ता है। अंतर्निहित समवर्ती समर्थन (गोरूटीन) और कुशल मेमोरी प्रबंधन के कारण, बड़े डेटा वॉल्यूम पर भी PDF जनरेशन तेज़ी से होता है। इसके अलावा, स्थैतिक टाइपिंग और समृद्ध मानक लाइब्रेरी कोड को विश्वसनीय और पूर्वानुमानित बनाती है।
Go में PDF जनरेशन के लिए मुख्य लाइब्रेरीज़
1. gofpdf — सरल और हल्की लाइब्रेरी
gofpdf प्रसिद्ध PHP लाइब्रेरी FPDF का एक पोर्ट है। यह शुरू से PDF बनाने के लिए बुनियादी API प्रदान करता है: पेज, फ़ॉन्ट, इमेज, टेबल और सरल ग्राफिकल प्रिमिटिव जोड़ना।
स्थापना:
go get github.com/jung-kurt/gofpdfउदाहरण: टेक्स्ट और इमेज के साथ एक सरल PDF बनाना
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, "नमस्ते, PDF दुनिया!") pdf.ImageOptions("logo.png", 10, 20, 30, 0, false, gofpdf.ImageOptions{ImageType: "PNG"}, 0, "") err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}लाभ: न्यूनतम API, छोटा आकार, कोई बाहरी निर्भरता नहीं, यूनिकोड (UTF-8) समर्थन।
नुकसान: जटिल लेआउट के लिए सीमित समर्थन, कोई अंतर्निहित HTML रेंडरिंग नहीं।
2. maroto — रिपोर्ट के लिए उच्च-स्तरीय लाइब्रेरी
Maroto gofpdf के ऊपर बनाई गई है और जटिल लेआउट बनाने के लिए "ग्रिड" की अवधारणा जोड़ती है: टेबल, कॉलम, कैप्शन और लोगो। यह चालान, इनवॉइस और रिपोर्ट के लिए आदर्श है।
स्थापना:
go get github.com/johnfercher/maroto/v2उदाहरण: टेबल के साथ चालान-पत्र बनाना
package main
import ( "github.com/johnfercher/maroto/v2" "github.com/johnfercher/maroto/v2/pkg/components/col" "github.com/johnfercher/maroto/v2/pkg/components/row" "github.com/johnfercher/maroto/v2/pkg/components/text" "github.com/johnfercher/maroto/v2/pkg/core")
func main() { m := maroto.New() m.AddRow(20, text.NewCol(12, "चालान क्रमांक 123")) m.AddRow(10, text.NewCol(12, "दिनांक: 2024-01-15")) // तालिका headers := []string{"वस्तु", "मात्रा", "मूल्य", "कुल"} rows := [][]string{ {"लैपटॉप", "2", "50000", "100000"}, {"माउस", "5", "1500", "7500"}, } m.AddRow(10, col.New(12).Add(text.New("वस्तुओं की तालिका"))) // तालिका के लिए table घटक का उपयोग करें // m.AddTable(headers, rows) doc, _ := m.Build() doc.Save("invoice.pdf")}लाभ: घोषणात्मक शैली, तैयार घटक (टेबल, QR कोड, ग्राफ़), स्वचालित संरेखण।
नुकसान: gofpdf की तुलना में अधिक निर्भरताएँ, जटिल लेआउट पर प्रदर्शन में कमी।
3. unipdf — विस्तारित क्षमताओं वाली व्यावसायिक लाइब्रेरी
UniPDF (UniDoc कंपनी द्वारा) PDF के साथ काम करने के लिए एक पेशेवर समाधान है: निर्माण, संपादन, डेटा निष्कर्षण, हस्ताक्षर, एन्क्रिप्शन। यह HTML-to-PDF रूपांतरण (WebKit के माध्यम से) का समर्थन करता है।
स्थापना:
go get github.com/unidoc/unipdf/v3प्र
पुस्तकालय में भी
Node.js के लिए WebSocket लाइब्रेरीज़: ws, Socket.IO और uWebSockets.js
Prometheus मेट्रिक्स C++ में: prometheus-cpp लाइब्रेरी गाइड
C++ अनुप्रयोगों की निगरानी: मेट्रिक्स संग्रह के लिए पुस्तकालय और उपकरण
PHP में GraphQL: API बनाने के लिए webonyx/graphql-php और Lighthouse लाइब्रेरीज़