"""PDFDoc — wrapper de documento PDF sobre fpdf2."""

from dataclasses import dataclass, field
from typing import Any


@dataclass
class PDFDoc:
    """Wrapper de documento PDF generado con fpdf2.

    Contiene el objeto FPDF interno con el estado del documento
    y la configuracion de metadatos y margenes del documento.
    La lista `pages` registra las paginas añadidas como metadata.
    """

    fpdf: Any = None            # objeto fpdf2.FPDF — estado mutable del documento
    pages: list = field(default_factory=list)  # lista de dicts con metadata de cada pagina
    title: str = ""
    author: str = ""
    subject: str = ""
    default_font: str = "Helvetica"
    margin_left: float = 20.0    # mm
    margin_right: float = 20.0   # mm
    margin_top: float = 20.0     # mm
    margin_bottom: float = 20.0  # mm
    header_text: str = ""        # texto del header recurrente (vacio = sin header)
    footer_text: str = ""        # texto del footer recurrente (vacio = sin footer)
    page_numbers: bool = False   # mostrar numeracion de pagina en footer
