Renderizar una tabla HTML con NextPDF Connect
De un vistazo
Sección titulada «De un vistazo»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).
Instalación
Sección titulada «Instalación»composer require nextpdf/serverVincular un transporte. La entrada debe contener una raíz <table> con filas <tr> y celdas <th>/<td>.
Visión conceptual
Sección titulada «Visión conceptual»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.
Superficie de la API
Sección titulada «Superficie de la API»| Herramienta | Función | Nivel de riesgo |
|---|---|---|
create_pdf | Abrir sesión | Seguro |
set_font | Establecer la fuente del texto de las celdas (opcional, antes de add_table) | Precaución |
add_table | Sanear y maquetar la tabla | Precaución |
output_pdf | Renderizar y devolver el PDF | Aprobación requerida / Revisión (base64) |
El catálogo de herramientas sirve como referencia. Las herramientas disponibles dependen del nivel instalado.
Ejemplo de código: inicio rápido
Sección titulada «Ejemplo de código: inicio rápido»create_pdf(A4 vertical, título) →document_id.add_tablecon una cadena<table>...</table>completa (fila de encabezado y filas de datos).output_pdf→ base64 o, si se proporciona unfile_path, escritura controlada de archivo.
El cursor avanza hasta quedar debajo de la última fila renderizada, dejando espacio para el contenido siguiente.
Ejemplo de código: producción
Sección titulada «Ejemplo de código: producción»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.
Casos límite y trampas
Sección titulada «Casos límite y trampas»- 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.pageen la respuesta, o llamar aadd_pagecon antelación.
Rendimiento
Sección titulada «Rendimiento»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.
Notas de seguridad
Sección titulada «Notas de seguridad»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.
Conformidad
Sección titulada «Conformidad»| Declaración | Especificación | Cláusula | reference_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 |
Contexto comercial
Sección titulada «Contexto comercial»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.
Presupuesto de memoria para tablas grandes
Sección titulada «Presupuesto de memoria para tablas grandes»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.
Disponibilidad de transporte
Sección titulada «Disponibilidad de transporte»| Transporte | Disponible | Notas |
|---|---|---|
| MCP (stdio) | Sí | El HTML extenso aumenta el tamaño de la trama de stdio. |
| REST | Sí | Envíe el HTML en el cuerpo de la solicitud. |
| gRPC | Sí | Unaria; se aplican límites de tamaño de mensaje. |
Nivel de riesgo HITL
Sección titulada «Nivel de riesgo HITL»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.
Sobre JSON de la barrera de confirmación
Sección titulada «Sobre JSON de la barrera de confirmación»Salida base64:
{ "allowed": true }La salida a archivo devuelve el sobre de desafío documentado en output-approval.