Ir al contenido

Renderizar una tabla HTML con NextPDF Connect

Renderizar datos tabulares estructurados a partir de una cadena de tabla HTML. add_table sanea la entrada mediante DOMDocument y una lista estricta de elementos permitidos antes de la maquetación, de modo que la salida se mantiene coherente sin importar cómo esté escrito el marcado de origen. Las herramientas son create_pdf, add_table y output_pdf, todas de Core. La tabla se maqueta como una cuadrícula de row/column (CSS Tables 3 §3.1).

Ventana de terminal
composer require nextpdf/server

Vincular un transporte. La entrada debe contener una raíz <table> con filas <tr> y celdas <th>/<td>.

add_table aplica una lista fija de elementos permitidos (table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span). Se eliminan todos los atributos de cada elemento: style, class, width, colspan, rowspan, id y cualquier otro. Cualquier etiqueta que no esté en la lista de elementos permitidos se sustituye por su contenido de texto. El texto de las celdas se renderiza con el estado de fuente activo del documento, establecido con set_font antes de add_table. Los operadores de mostrado de texto emiten el texto en el orden del flujo de contenido (ISO 32000-2 §9.4). El motor de maquetación decide los anchos de columna, no el CSS en línea.

HerramientaFunciónNivel de riesgo
create_pdfAbrir sesiónSeguro
set_fontEstablecer la fuente del texto de las celdas (opcional, antes de add_table)Precaución
add_tableSanear y maquetar la tablaPrecaución
output_pdfRenderizar y devolver el PDFAprobación requerida / Revisión (base64)

El catálogo de herramientas sirve como referencia. Las herramientas disponibles dependen del nivel instalado.

  1. create_pdf (A4 vertical, título) → document_id.
  2. add_table con una cadena <table>...</table> completa (fila de encabezado y filas de datos).
  3. output_pdf → base64 o, si se proporciona un file_path, escritura controlada de archivo.

El cursor avanza hasta quedar debajo de la última fila renderizada, dejando espacio para el contenido siguiente.

Se debe validar el HTML antes de enviarlo. Se debe establecer la fuente de las celdas con set_font para obtener una tipografía determinista: depender de un valor predeterminado hace que la fuente de salida dependa de la implementación. Para controlar qué herramientas puede invocar el host, restringir el registro mediante la política de seguridad.

  • HTML vacío o sin tabla. Una entrada sin <table> devuelve un error de tabla no renderizable.
  • Marcado mal formado. Las etiquetas no balanceadas devuelven un error de análisis, así que se debe validar primero la estructura.
  • Tabla más ancha que la página. Reducir las columnas, acortar el contenido o cambiar a orientación horizontal.
  • Desbordamiento. Una tabla alta continúa en una página nueva. Comprobar position.page en la respuesta, o llamar a add_page con antelación.

Una tabla pequeña se renderiza dentro del presupuesto y la salida ocupa unos pocos KB. El perfil es structural. El saneamiento se ejecuta en una sola pasada sobre el DOM analizado.

La eliminación de atributos es incondicional y no puede eludirse. Protege frente a la inyección de estilos y scripts a través del marcado de las celdas. No se conserva ningún CSS en línea, controlador de eventos ni URL javascript:. La lista de elementos permitidos es el límite de confianza, así que no se debe tratar la salida renderizada como una reproducción fiel de un estilo de origen arbitrario.

DeclaraciónEspecificaciónCláusulareference_id
Las tablas se maquetan como una cuadrícula de celdas row/column.CSS Tables 3§3.1
Los operadores de texto muestran el texto en el orden del flujo.ISO 32000-2§9.4

No aplicable: todas las herramientas mencionadas aquí son de Core.

Extracto de la matriz de compatibilidad CSS (solo Verificado)

Sección titulada «Extracto de la matriz de compatibilidad CSS (solo Verificado)»

add_table no ejecuta un motor CSS general. El único comportamiento «CSS» es el modelo fijo de cuadrícula de tabla: las filas y las columnas proceden de la estructura de la tabla, y el motor de maquetación elige los anchos. El estilo en línea no se admite por diseño, porque los atributos se eliminan. Para la cobertura CSS en el nivel de motor (no de Connect), véase la matriz de compatibilidad CSS del proyecto.

Restricción de transmisión de una sola pasada

Sección titulada «Restricción de transmisión de una sola pasada»

add_table analiza el marcado proporcionado en un DOM una sola vez y lo maqueta en una única pasada. No se realiza reflujo frente a hojas de estilo externas. Una tabla que desborda la página avanza a la página siguiente en lugar de someterse a reflujo retroactivo.

Las tablas muy grandes mantienen en memoria el DOM analizado y las celdas maquetadas durante toda la llamada. Dividir los conjuntos de datos grandes en varias llamadas a add_table ayuda a mantenerse dentro del presupuesto de memoria máxima.

TransporteDisponibleNotas
MCP (stdio)El HTML extenso aumenta el tamaño de la trama de stdio.
RESTEnvíe el HTML en el cuerpo de la solicitud.
gRPCUnaria; se aplican límites de tamaño de mensaje.

create_pdf es Seguro; set_font y add_table son Precaución; output_pdf es Aprobación requerida, que se degrada a Revisión en modo base64. La salida a archivo sigue siendo Aprobación requerida: véase output-approval.

Salida base64:

{ "allowed": true }

La salida a archivo devuelve el sobre de desafío documentado en output-approval.