Files
sendico/api/billing/documents/renderer/header.go
2026-01-30 15:16:20 +01:00

51 lines
1.1 KiB
Go

package renderer
import (
"strings"
"github.com/jung-kurt/gofpdf"
)
// Issuer describes the document issuer.
type Issuer struct {
LegalName string `yaml:"legal_name"`
LegalAddress string `yaml:"legal_address"`
LogoPath string `yaml:"logo_path"`
}
func drawHeader(pdf *gofpdf.Fpdf, issuer Issuer, marginLeft, marginTop float64) (float64, error) {
startX := marginLeft
startY := marginTop
logoWidth := 0.0
if strings.TrimSpace(issuer.LogoPath) != "" {
logoWidth = 24
pdf.ImageOptions(issuer.LogoPath, startX, startY, logoWidth, 0, false, gofpdf.ImageOptions{ReadDpi: true}, 0, "")
}
textX := startX
if logoWidth > 0 {
textX = startX + logoWidth + 6
}
pdf.SetXY(textX, startY)
pdf.SetFont("Helvetica", "B", 12)
pdf.CellFormat(0, 5, issuer.LegalName, "", 1, "L", false, 0, "")
pdf.SetX(textX)
pdf.SetFont("Helvetica", "", 10)
pdf.MultiCell(0, 4.5, issuer.LegalAddress, "", "L", false)
if pdf.Error() != nil {
return 0, pdf.Error()
}
currentY := pdf.GetY()
if logoWidth > 0 {
logoBottom := startY + logoWidth
if logoBottom > currentY {
currentY = logoBottom
}
}
return currentY - startY, nil
}