Go (Golang) में PDF रिपोर्ट जनरेशन: लाइब्रेरी और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में PDF रिपोर्ट जनरेशन: लाइब्रेरी और कोड उदाहरण

Go (Golang) एक आधुनिक कंपाइल्ड भाषा है जिसे हाई-लोड सर्वर एप्लिकेशन और माइक्रोसर्विसेज बनाने के लिए तेजी से चुना जा रहा है। ऐसे सिस्टम में एक सामान्य कार्य है PDF रिपोर्ट (इनवॉइस, एक्ट, स्टैटिस्टिकल डैशबोर्ड) तैयार करना। इस लेख में हम Go में PDF जनरेट करने के लिए तीन लोकप्रिय लाइब्रेरी, उनकी खूबियाँ और तैयार कोड उदाहरण देखेंगे।

1. gofpdf — स्क्रैच से PDF बनाने का क्लासिक तरीका

लाइब्रेरी gofpdf (अब jung-kurt/gofpdf या फोर्क go-pdf/fpdf के रूप में विकसित) प्रसिद्ध PHP लाइब्रेरी FPDF का पोर्ट है। यह बिना किसी बाहरी डिपेंडेंसी के, केवल Go के मानक टूल का उपयोग करके PDF डॉक्यूमेंट बनाने की सुविधा देती है।

इंस्टॉलेशन

go get github.com/jung-kurt/gofpdf

उदाहरण: सरल इनवॉइस

package main

import (
    "github.com/jung-kurt/gofpdf"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")
    pdf.SetFont("Arial", "B", 16)
    pdf.AddPage()
    pdf.CellFormat(190, 10, "इनवॉइस नं. 123, दिनांक 01.01.2025", "0", 1, "C", false, 0, "")
    
    pdf.SetFont("Arial", "", 12)
    pdf.Ln(10)
    pdf.CellFormat(190, 10, "उत्पाद: लैपटॉप", "1", 1, "L", false, 0, "")
    pdf.CellFormat(190, 10, "मूल्य: ₹1,20,000", "1", 1, "L", false, 0, "")
    pdf.CellFormat(190, 10, "कुल: ₹1,20,000", "1", 1, "L", false, 0, "")
    
    err := pdf.OutputFileAndClose("invoice.pdf")
    if err != nil {
        panic(err)
    }
}

फायदे: न्यूनतम डिपेंडेंसी, हर एलिमेंट पर पूरा नियंत्रण, यूनिकोड सपोर्ट (AddUTF8Font के जरिए)।
नुकसान: लो-लेवल API — जटिल रिपोर्ट के लिए मैन्युअल कोडिंग ज्यादा करनी पड़ती है।

2. maroto — टेबल और स्टाइल के साथ हाई-लेवल जनरेशन

Maroto gofpdf के ऊपर बनी है, लेकिन अधिक सुविधाजनक API प्रदान करती है: टेबल, ग्रिड, ऑटोमैटिक अलाइनमेंट और बिल्ट-इन फॉन्ट सपोर्ट। सामान्य रिपोर्ट जैसे इनवॉइस, लिस्ट, प्राइस लिस्ट के लिए यह आदर्श है।

इंस्टॉलेशन

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.New()
    m.SetPageMargins(10, 10, 10)
    
    // हेडर
    m.Row(10, func() {
        m.Col(12, func() {
            m.Text("बिक्री रिपोर्ट", props.Text{
                Style: props.Bold,
                Size:  16,
                Align: props.Center,
            })
        })
    })
    
    // टेबल
    header := []string{"उत्पाद", "मात्रा", "मूल्य"}
    data := [][]string{
        {"मॉनिटर", "2", "₹30,000"},
        {"कीबोर्ड", "5", "₹7,500"},
    }
    
    m.TableList(header, data, props.TableList{
        HeaderProp: props.TableListContent{
            Style: props.Bold,
            Size:  10,
        },
        ContentProp: props.TableListContent{
            Size: 9,
        },
    })
    
    document, _ := m.Generate()
    document.Save("report.pdf")
}

फायदे: तेज डेवलपमेंट, बिल्ट-इन स्टाइल, ऑटोमैटिक पेज ब्रेक।
नुकसान: गैर-मानक लेआउट के लिए कम लचीलापन।

3. wkhtmltopdf — Go रैपर के जरिए HTML को PDF में बदलना

अगर आपके पास पहले से HTML टेम्पलेट (जैसे Bootstrap पर) हैं, तो wkhtmltopdf का उपयोग करना सबसे आसान है। यह Go लाइब्रेरी नहीं, बल्कि कमांड-लाइन यूटिलिटी है, लेकिन Go के लिए go-wkhtmltopdf रैपर उपलब्ध है। यह HTML स्ट्रिंग लेता है और PDF लौटाता है।

इंस्टॉलेशन

# पहले wkhtmltopdf इंस्टॉल करें: https://wkhtmltopdf.org/downloads.html
go get github.com/SebastiaanKlippert/go-wkhtmltopdf

उदाहरण: HTML से PDF

package main

import (
    "bytes"
    "fmt"                    

अनुशंसाएँ