HTTP API
La impresión de plantillas admite activar directamente la generación y descarga de documentos mediante HTTP API. Tanto si se trata de un Block de detalles como de un Block de tabla, en esencia se lanza la Action templatePrint sobre el Resource de negocio actual.
Notas:
<resource_name>es el nombre del Resource correspondiente a la Collection actual.- La API devuelve un flujo de archivo binario, no datos JSON.
- El llamante debe disponer del permiso de consulta del Resource actual y del permiso de uso del botón de impresión de plantilla correspondiente.
- La invocación de la API requiere transmitir el token JWT basado en el inicio de sesión del usuario mediante el header Authorization; de lo contrario, el acceso será rechazado.
Parámetros del cuerpo de la solicitud
Block de tabla
El Block de tabla utiliza la misma API y especifica el modo de impresión de lista mediante blockName: "table". El servidor ejecutará una consulta find sobre el Resource y pasará el array de resultados a la plantilla.
Imprimir registros seleccionados o el resultado de la página actual
Adecuado para imprimir parte de los registros marcados desde el Block de tabla, o para imprimir manteniendo el contexto de paginación de la página actual. La práctica común es:
- Establecer
queryParams.pageyqueryParams.pageSizecon el número de página actual y el tamaño de página de la tabla. - Componer las claves primarias de los registros marcados como condición
filter.id.$in.
El significado de este tipo de solicitud es el siguiente:
blockNameestable, indica que se renderiza la plantilla con datos de lista.filter.id.$inse utiliza para especificar el conjunto de registros que se desean imprimir.pageypageSizemantienen el contexto de paginación actual, para que sea coherente con el comportamiento de la interfaz.appendspermite añadir campos relacionados según sea necesario.
Imprimir todos los datos que cumplan las condiciones
Adecuado para el modo de invocación al hacer clic en "Imprimir todos los registros" en el Block de tabla. En este caso, ya no se aplica recorte por la paginación de la página actual, sino que se obtienen directamente todos los datos que cumplan las condiciones de filtrado actuales.
El punto clave es transmitir explícitamente queryParams.page y queryParams.pageSize como null.
El significado de este tipo de solicitud es el siguiente:
page: nullypageSize: nullindican que se cancelan los límites de paginación.filter: {}indica que no se añaden condiciones de filtrado adicionales; si la interfaz ya tiene condiciones de filtrado, también pueden colocarse aquí directamente.- El servidor consultará todos los datos que cumplan las condiciones y renderizará la plantilla en lote.
Atención: el Block de tabla puede imprimir un máximo de 300 registros por vez. Si se supera el límite, la API devolverá un error
400.
Block de detalles
El Block de detalles también utiliza la Action templatePrint, pero normalmente transmite:
blockName: "details"queryParams.filterByTkpara especificar la clave primaria del registro actualqueryParams.appendspara especificar los campos relacionados que se desean consultar adicionalmente
El servidor ejecutará una consulta findOne sobre el Resource y pasará el objeto resultante a la plantilla.
Resultado de respuesta
Tras una invocación exitosa, la API devuelve directamente un flujo de archivo; los headers de respuesta típicos son los siguientes:
Notas:
- Cuando
convertedToPDFestrue, la extensión del archivo devuelto es.pdf. - En caso contrario, se devuelve un archivo del tipo original correspondiente a la plantilla, por ejemplo
.docx,.xlsxo.pptx. - El frontend normalmente activa la descarga del navegador según el nombre de archivo en
Content-Disposition.

