Estilos

Opciones de texto

Todo el estilo de texto se aplica mediante opciones funcionales en c.Text():

c.Text("Styled text",
    template.FontSize(18),
    template.Bold(),
    template.TextColor(pdf.RGBHex(0x1A237E)),
)

Opciones de texto disponibles

OpcionDescripcion
FontSize(size)Tamano de fuente en puntos (predeterminado: 12)
Bold()Peso negrita
Italic()Estilo cursiva
FontFamily(name)Usar una familia de fuentes registrada
TextColor(color)Color de primer plano del texto
BgColor(color)Color de fondo del texto
AlignLeft()Alineacion izquierda (predeterminado)
AlignCenter()Alineacion centrada
AlignRight()Alineacion derecha
Underline()Decoracion de subrayado
Strikethrough()Decoracion de tachado
LetterSpacing(pts)Espacio adicional entre caracteres
TextIndent(value)Sangria de primera linea

Colores

gpdf soporta multiples modelos de color:

Colores predefinidos

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                    │
└─────────────────────────────────────────┘
ConstanteValor
pdf.BlackGray(0)
pdf.WhiteGray(1)
pdf.RedRGB(1, 0, 0)
pdf.GreenRGB(0, 1, 0)
pdf.BlueRGB(0, 0, 1)
pdf.YellowRGB(1, 1, 0)
pdf.CyanRGB(0, 1, 1)
pdf.MagentaRGB(1, 0, 1)

Colores RGB (flotante)

Los valores RGB van de 0.0 a 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)))

Colores hexadecimales

Use codigos de color hexadecimales estandar:

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)))

Escala de grises

Valores de 0.0 (negro) a 1.0 (blanco):

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)))

Colores CMYK

Para salida optimizada para impresion:

c.Text("CMYK text", template.TextColor(pdf.CMYK(0, 1, 1, 0))) // Red in CMYK

Colores de fondo

Aplique muestras de color de fondo con 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)  │
└───────────┴───────────┴───────────┴───────────┘

Decoracion de texto

Subrayado

c.Text("Underlined text for emphasis", template.Underline())

Tachado

c.Text("Strikethrough text for deletions", template.Strikethrough())

Decoraciones combinadas

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               │  ← subrayado
│  Strikethrough text for deletions           │  ← linea a traves
│  Combined underline and strikethrough       │  ← ambos
│  Colored underlined text                    │  ← azul, subrayado
│  Bold underlined heading                    │  ← negrita, subrayado
└─────────────────────────────────────────────┘

Espaciado entre letras

Controle el espacio entre caracteres:

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         │  ← ligeramente espaciado
│  3 p t   l e t t e r   s p a c i n g       │  ← mas espaciado
│  5 p t    l e t t e r    s p a c i n g     │  ← muy espaciado
│  Tight spacing (-0.5pt)                     │  ← comprimido
└─────────────────────────────────────────────┘

Sangria de texto

Agregue sangria de primera linea a los parrafos:

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.                 │
└─────────────────────────────────────────────┘

Siguientes pasos