--- name: pdf_add_table kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def pdf_add_table(doc, headers, rows, col_widths, header_style, row_style, border, row_height, alternate_bg) -> PDFDoc" description: "Añade una tabla con fila de headers y filas de datos al documento PDF. Soporta anchos de columna personalizados, estilos diferenciados para headers/datos, bordes y colores alternados en filas." tags: [pdf, table, data, builder, infra] uses_functions: [] uses_types: [pdf_doc_py_infra, pdf_style_py_infra] returns: [pdf_doc_py_infra] returns_optional: false error_type: "error_go_core" imports: [] params: - name: doc desc: "PDFDoc con pagina activa" - name: headers desc: "lista de strings con nombres de columna de la tabla" - name: rows desc: "lista de listas de strings con los datos de cada fila" - name: col_widths desc: "lista de anchos de columna en mm; None distribuye uniformemente el ancho disponible" - name: header_style desc: "PDFStyle para la fila de headers; None usa Helvetica-Bold 10pt" - name: row_style desc: "PDFStyle para filas de datos; None usa Helvetica 10pt" - name: border desc: "tipo de borde: 0=sin borde, 1=borde completo" - name: row_height desc: "altura de cada celda en mm, por defecto 8" - name: alternate_bg desc: "si True alterna fondo gris claro en filas pares para mejorar legibilidad" output: "PDFDoc con la tabla renderizada en la pagina activa" tested: true tests: ["tabla con headers y datos", "tabla con col_widths personalizados", "tabla sin borde"] test_file_path: "python/functions/infra/pdf_add_table_test.py" file_path: "python/functions/infra/pdf_add_table.py" --- ## Ejemplo ```python headers = ["Dominio", "Funciones", "Purity"] rows = [ ["core", "45", "pure"], ["infra", "38", "impure"], ["finance", "22", "mixed"], ] doc = pdf_add_table(doc, headers, rows, col_widths=[70, 40, 60]) ``` ## Notas Las columnas se distribuyen uniformemente si `col_widths` es None. Si la lista tiene menos elementos que columnas, se completa con distribucion uniforme. El fondo alternado usa gris muy claro (245, 245, 245) en filas impares para mejorar la lectura de tablas largas. No gestiona overflow de celdas — textos muy largos se truncan en fpdf2 con `cell()`.