Styling
Text Options
All text styling is applied through functional options on c.Text():
c.Text("Styled text",
template.FontSize(18),
template.Bold(),
template.TextColor(pdf.RGBHex(0x1A237E)),
)
Available Text Options
| Option | Description |
|---|---|
FontSize(size) | Font size in points (default: 12) |
Bold() | Bold weight |
Italic() | Italic style |
FontFamily(name) | Use a registered font family |
TextColor(color) | Text foreground color |
BgColor(color) | Text background color |
AlignLeft() | Left alignment (default) |
AlignCenter() | Center alignment |
AlignRight() | Right alignment |
Underline() | Underline decoration |
Strikethrough() | Strikethrough decoration |
LetterSpacing(pts) | Extra space between characters |
TextIndent(value) | First-line indent |
Colors
gpdf supports multiple color models:
Predefined Colors
c.Text("Red", template.TextColor(pdf.Red))
c.Text("Green", template.TextColor(pdf.Green))
c.Text("Blue", template.TextColor(pdf.Blue))
c.Text("Yellow", template.TextColor(pdf.Yellow))
c.Text("Cyan", template.TextColor(pdf.Cyan))
c.Text("Magenta", template.TextColor(pdf.Magenta))
┌─────────────────────────────────────────┐
│ Red ← red │
│ Green ← green │
│ Blue ← blue │
│ Yellow ← yellow │
│ Cyan ← cyan │
│ Magenta ← magenta │
└─────────────────────────────────────────┘
| Constant | Value |
|---|---|
pdf.Black | Gray(0) |
pdf.White | Gray(1) |
pdf.Red | RGB(1, 0, 0) |
pdf.Green | RGB(0, 1, 0) |
pdf.Blue | RGB(0, 0, 1) |
pdf.Yellow | RGB(1, 1, 0) |
pdf.Cyan | RGB(0, 1, 1) |
pdf.Magenta | RGB(1, 0, 1) |
RGB Colors (Float)
RGB values range from 0.0 to 1.0:
c.Text("Orange", template.TextColor(pdf.RGB(1.0, 0.5, 0.0)))
c.Text("Purple", template.TextColor(pdf.RGB(0.5, 0.0, 0.5)))
c.Text("Teal", template.TextColor(pdf.RGB(0.0, 0.5, 0.5)))
Hex Colors
Use standard hex color codes:
c.Text("Coral", template.TextColor(pdf.RGBHex(0xFF6B6B)))
c.Text("Turquoise", template.TextColor(pdf.RGBHex(0x4ECDC4)))
c.Text("Sky Blue", template.TextColor(pdf.RGBHex(0x45B7D1)))
c.Text("Sage", template.TextColor(pdf.RGBHex(0x96CEB4)))
Grayscale
Values from 0.0 (black) to 1.0 (white):
c.Text("Black", template.TextColor(pdf.Gray(0.0)))
c.Text("Dark gray", template.TextColor(pdf.Gray(0.3)))
c.Text("Medium gray", template.TextColor(pdf.Gray(0.5)))
c.Text("Light gray", template.TextColor(pdf.Gray(0.7)))
CMYK Colors
For print-optimized output:
c.Text("CMYK text", template.TextColor(pdf.CMYK(0, 1, 1, 0))) // Red in CMYK
Background Colors
Apply background color swatches with BgColor():
page.AutoRow(func(r *template.RowBuilder) {
r.Col(3, func(c *template.ColBuilder) {
c.Text(" Red ", template.TextColor(pdf.White), template.BgColor(pdf.Red))
})
r.Col(3, func(c *template.ColBuilder) {
c.Text(" Green ", template.TextColor(pdf.White), template.BgColor(pdf.Green))
})
r.Col(3, func(c *template.ColBuilder) {
c.Text(" Blue ", template.TextColor(pdf.White), template.BgColor(pdf.Blue))
})
r.Col(3, func(c *template.ColBuilder) {
c.Text(" Yellow ", template.BgColor(pdf.Yellow))
})
})
┌───────────┬───────────┬───────────┬───────────┐
│ ██ Red ██ │ █ Green █ │ ██ Blue █ │ Yellow │
│ (white) │ (white) │ (white) │ (black) │
└───────────┴───────────┴───────────┴───────────┘
Text Decoration
Underline
c.Text("Underlined text for emphasis", template.Underline())
Strikethrough
c.Text("Strikethrough text for deletions", template.Strikethrough())
Combined Decorations
c.Text("Combined underline and strikethrough",
template.Underline(), template.Strikethrough())
c.Text("Colored underlined text",
template.Underline(),
template.TextColor(pdf.RGBHex(0x1565C0)),
template.FontSize(14))
c.Text("Bold underlined heading",
template.Bold(), template.Underline(), template.FontSize(16))
┌─────────────────────────────────────────────┐
│ Normal text without decoration │
│ Underlined text for emphasis │ ← underline
│ Strikethrough text for deletions │ ← line through
│ Combined underline and strikethrough │ ← both
│ Colored underlined text │ ← blue, underline
│ Bold underlined heading │ ← bold, underline
└─────────────────────────────────────────────┘
Letter Spacing
Control the space between characters:
c.Text("Normal spacing (default)")
c.Text("1pt letter spacing", template.LetterSpacing(1))
c.Text("3pt letter spacing", template.LetterSpacing(3))
c.Text("5pt letter spacing", template.LetterSpacing(5))
c.Text("Tight spacing (-0.5pt)", template.LetterSpacing(-0.5))
┌─────────────────────────────────────────────┐
│ Normal spacing (default) │
│ 1 p t l e t t e r s p a c i n g │ ← slightly spaced
│ 3 p t l e t t e r s p a c i n g │ ← more spaced
│ 5 p t l e t t e r s p a c i n g │ ← very spaced
│ Tight spacing (-0.5pt) │ ← compressed
└─────────────────────────────────────────────┘
Text Indent
Add first-line indentation to paragraphs:
c.Text("This paragraph has a 24pt first-line indent. "+
"The rest of the text wraps normally without indentation.",
template.TextIndent(document.Pt(24)))
c.Text("This paragraph has a larger 48pt indent. "+
"Useful for formal or academic document styling.",
template.TextIndent(document.Pt(48)))
┌─────────────────────────────────────────────┐
│ This paragraph has a 24pt first-line │
│ indent. The rest of the text wraps │
│ normally without indentation. │
│ │
│ This paragraph has a larger │
│ 48pt indent. Useful for formal or │
│ academic document styling. │
└─────────────────────────────────────────────┘
Next Steps
- Fonts — Custom fonts and CJK support
- Headers & Footers — Page-level content
- Elements — All content element types