---
name: pdf_style
lang: py
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class PDFStyle:
      font_family: str = "Helvetica"
      font_size: float = 12.0
      color: str = "#000000"
      alignment: str = "left"
      line_height: float = 1.2
      margin_top: float = 0.0
      margin_bottom: float = 2.0
description: "Configuracion de estilo de texto para generacion de PDF. Agrupa fuente, tamaño, color, alineacion y margenes verticales para aplicar a bloques de texto y celdas de tabla."
tags: [pdf, style, typography, infra]
uses_types: []
file_path: "python/types/infra/pdf_style.py"
---

## Campos

- `font_family` — nombre de fuente fpdf2: `Helvetica`, `Helvetica-Bold`, `Helvetica-Oblique`, `Times`, `Courier`. Por defecto `Helvetica`.
- `font_size` — tamaño en puntos tipograficos. Por defecto `12.0`.
- `color` — color hex RGB (ej: `"#000000"` negro, `"#FF0000"` rojo). Por defecto negro.
- `alignment` — alineacion horizontal del texto: `left`, `center`, `right`, `justify`. Por defecto `left`.
- `line_height` — multiplicador de interlineado respecto al tamaño de fuente. `1.2` da un interlineado comodo.
- `margin_top` — espacio vertical en mm antes del bloque de texto. Por defecto `0.0`.
- `margin_bottom` — espacio vertical en mm despues del bloque de texto. Por defecto `2.0`.

## Ejemplo

```python
from pdf_style import PDFStyle

# Titulo grande centrado
titulo = PDFStyle(font_family="Helvetica-Bold", font_size=22.0, alignment="center")

# Texto de pie en gris
pie = PDFStyle(font_size=9.0, color="#666666")

# Cuerpo justificado con margen
cuerpo = PDFStyle(font_size=11.0, alignment="justify", margin_bottom=4.0)
```

## Notas

Tipo producto inmutable por convencion. Las fuentes built-in de fpdf2 (`Helvetica`, `Times`, `Courier` y sus variantes `-Bold`, `-Oblique`, `-BoldOblique`) no requieren archivos .ttf externos. Para fuentes custom, registrarlas en fpdf2 antes de usarlas.
