Go (Golang) में PDF जनरेशन: उपकरणों और लाइब्रेरीज़ का पूर्ण अवलोकन
आधुनिक वेब एप्लिकेशन और माइक्रोसर्विसेज़ को अक्सर PDF दस्तावेज़ जनरेट करने की आवश्यकता होती है: रिपोर्ट, चालान, इनवॉइस, प्रमाणपत्र या केवल डेटा निर्यात। Go भाषा इस कार्य के लिए कई परिपक्व समाधान प्रदान करती है। इस लेख में, हम मुख्य लाइब्रेरीज़, उनकी क्षमताओं, उपयोग के उदाहरणों पर विस्तार से चर्चा करेंगे और pythonlib.ru पर आपके प्रोजेक्ट के लिए उपयुक्त उपकरण चुनने में मदद करेंगे।
PDF जनरेशन के लिए Go का उपयोग क्यों करें?
Go (Golang) एक संकलित, स्थिर रूप से टाइप की गई भाषा है जो अपने प्रदर्शन और सरलता के लिए जानी जाती है। PDF जनरेशन करते समय, यह निम्नलिखित लाभ प्रदान करती है:
- उच्च गति — Go बाइनरी फ़ाइलें तेज़ी से काम करती हैं और मेमोरी का कुशलतापूर्वक उपयोग करती हैं।
- तैनाती में सरलता — बाहरी निर्भरताओं के बिना एक एकल निष्पादन योग्य फ़ाइल (wkhtmltopdf के मामलों को छोड़कर)।
- अंतर्निहित समवर्ती समर्थन — एक साथ कई PDF जनरेशन अनुरोधों को संसाधित किया जा सकता है।
- क्रॉस-प्लेटफ़ॉर्म — एक बार बनाएं और Linux, Windows, macOS पर चलाएं।
Go में PDF के साथ काम करने के लिए मुख्य लाइब्रेरीज़
तीन लोकप्रिय दृष्टिकोणों पर विचार करें: Go (gofpdf) में शुद्ध कार्यान्वयन, पेशेवर वाणिज्यिक लाइब्रेरी (uniPDF) और HTML का PDF में रूपांतरण (wkhtmltopdf)।
1. gofpdf — सरल और हल्की लाइब्रेरी
gofpdf (अब github.com/jung-kurt/gofpdf) शुद्ध Go में PDF बनाने के लिए पहली और सबसे आम लाइब्रेरी में से एक है। इसे बाहरी निर्भरताओं की आवश्यकता नहीं है और यह प्रोग्रामेटिक रूप से टेक्स्ट, लाइनें, चित्र और तालिकाएँ बनाने की अनुमति देता है।
टेक्स्ट और चित्र के साथ एक सरल 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.ImageOptions("logo.png", 10, 20, 50, 0, false, gofpdf.ImageOptions{ImageType: "PNG", ReadDpi: true}, 0, "") // फ़ाइल में सहेजें err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}लाभ:
- पूरी तरह से Go में — कोई बाहरी प्रोग्राम नहीं।
- हल्का वजन और सरल स्थापना।
- अंतर्निहित फ़ॉन्ट के माध्यम से Unicode (सिरिलिक सहित) के लिए समर्थन।
नुकसान:
- जटिल लेआउट के लिए सीमित समर्थन (उदाहरण के लिए, जटिल तालिकाओं के लिए कोई तैयार समाधान नहीं)।
- तत्वों की मैन्युअल स्थिति निर्धारण — सरल दस्तावेज़ों के लिए उपयुक्त।
2. UniPDF — जटिल कार्यों के लिए पेशेवर समाधान
UniPDF (github.com/unidoc/unipdf/v3 से) एक शक्तिशाली वाणिज्यिक लाइब्रेरी है जो PDF पर लगभग पूर्ण नियंत्रण प्रदान करती है। यह PDF के निर्माण, संपादन, रूपांतरण और डेटा निष्कर्षण का समर्थन करती है। शैक्षिक और गैर-वाणिज्यिक परियोजनाओं के लिए, सीमाओं के साथ एक मुफ्त संस्करण उपलब्ध है।
तालिका के साथ रिपोर्ट बनाने का उदाहरण:
package main
import ( "github.com/unidoc/unipdf/v3/common/license" "github.com/unidoc/unipdf/v3/creator")
func main() { // लाइसेंस निर्दिष्ट करें (परीक्षण के लिए मुफ्त) license.SetMeteredKey("आपकी_कुंजी") c := creator.New() c.NewPage() // शीर्षक chapter := c.NewChapter("मासिक रिपोर्ट") chapter.Add(c.NewParagraph("बिक्री डेटा")) // तालिका table := c.NewTable(3) table.SetColumnWidths(100, 100, 100) headers := []string{"उत्पाद", "मात्रा", "राशि"} for _, h := range headers { cell := table.NewCell() cell.SetBackgroundColor(creator.Col