Entity Print
Entity Print permite imprimir cualquier entidad de Drupal o View a formatos PDF, documento Word o EPub utilizando motores PDF configurables como DomPdf, wkhtmltopdf o TCPDF.
entity_print
Install
composer require 'drupal/entity_print:8.x-2.18'
Overview
Entity Print es una solución completa de impresión PDF para Drupal que permite convertir cualquier entidad de contenido (nodos, usuarios, productos de comercio, etc.) o Views en documentos descargables en múltiples formatos incluyendo PDF, documento Word (DOCX) y EPub.
El módulo proporciona una arquitectura ligera pero potente con cobertura completa de pruebas, soportando múltiples motores de generación de PDF (DomPdf, wkhtmltopdf, TCPDF). Se integra perfectamente con los modos de visualización de Drupal, permitiendo a los administradores configurar qué tipos de exportación aparecen en las páginas de visualización de entidades.
Las capacidades principales incluyen: generación programática de PDF a través de la API de servicios, descarga masiva mediante acciones de Views Bulk Operations, plantillas y estilos CSS personalizables, sistema de eventos para personalización avanzada, y controles de permisos completos por tipo de entidad y bundle.
Features
- Convertir cualquier entidad de contenido de Drupal (nodos, usuarios, términos de taxonomía, productos de comercio, etc.) a formato PDF, documento Word o EPub
- Imprimir Views completas con el submódulo Entity Print Views, soportando filtros expuestos y argumentos
- Soporte para múltiples motores PDF: DomPdf (predeterminado, incluido vía Composer), wkhtmltopdf (binario externo) y TCPDF
- Configuración de tamaño de papel, orientación y DPI por motor de impresión
- Integración de campo extra permitiendo colocar enlaces 'Ver PDF' en la configuración de visualización de entidades
- Plugin de bloque para mostrar enlaces de impresión contextualmente en páginas de entidades
- Acción de Views Bulk Operations (VBO) para descarga por lotes de múltiples entidades como PDF
- Manejador de área de Views para agregar enlaces de impresión en encabezados/pies de página de Views
- Manejador de campo de Views para agregar enlaces de impresión a cada fila en una View
- Modo de depuración para visualizar el HTML generado antes de la conversión a PDF (útil para estilizado CSS)
- Sistema de eventos para personalizar HTML, CSS, nombres de archivo y salida de impresión
- Recopilación automática de CSS del tema activo y bibliotecas adjuntas
- Formateador de imagen Base64 para incrustar imágenes directamente en PDFs
- Soporte de autenticación HTTP para recursos protegidos
- Reenvío de cookies de sesión para acceder a archivos privados en PDFs
- API programática para generar y guardar PDFs a través del servicio PrintBuilder
- Permisos granulares por tipo de entidad y bundle para acceso de impresión
- Crea un modo de visualización 'PDF' en la instalación para diseños de impresión personalizados
- Soporte de tematización con plantilla entity-print.html.twig personalizable
Use Cases
Generar facturas descargables
Cree facturas PDF a partir de pedidos de Commerce habilitando Entity Print en el tipo de entidad pedido, configurando un modo de visualización 'PDF' con diseño de factura, y agregando el campo 'Ver PDF' a la visualización del pedido. Los usuarios pueden hacer clic en el enlace para descargar su factura.
Impresión masiva de certificados
Use Views Bulk Operations con la acción Entity Print para seleccionar múltiples nodos de certificado y generar una descarga PDF combinada. Configure la acción en Views y seleccione 'Descargar PDF' del menú desplegable de operaciones masivas.
Imprimir informes desde Views
Habilite el submódulo Entity Print Views y agregue el manejador de área 'Global: Print' al encabezado de una View. Los usuarios pueden imprimir la salida completa de la view incluyendo todas las filas que coincidan con sus criterios de filtro expuesto.
Estilizado personalizado de PDF
Cree entity-print--node--article.html.twig en su tema para personalizar el diseño de impresión para artículos. Agregue archivos CSS dirigidos al modo de visualización 'pdf' en las bibliotecas de su tema para estilizar la salida PDF de manera diferente al sitio web.
Generación programática de PDF
Use el servicio entity_print.print_builder para generar PDFs en código personalizado o trabajadores de cola. Llame savePrintable() para guardar PDFs en disco o deliverPrintable() para transmitir al navegador. Suscríbase a eventos para personalizar la salida dinámicamente.
Depurar estilizado de PDF
Agregue /debug a cualquier URL de impresión (ej., /print/pdf/node/1/debug) para ver el HTML sin procesar que será convertido a PDF. Use esto para depurar problemas de CSS y verificar el renderizado del contenido antes de la generación final del PDF.
Tips
- Cree un modo de visualización 'PDF' dedicado para cada tipo de contenido para controlar exactamente qué aparece en los documentos impresos sin afectar la visualización del sitio web.
- Use el endpoint /debug (ej., /print/pdf/node/1/debug) durante el desarrollo para ver el HTML antes de que sea convertido a PDF.
- Agregue CSS específico para impresión en su tema creando archivos CSS que apunten a las clases de la plantilla entity-print.
- Para nombres de archivo personalizados, suscríbase al evento entity_print.print.filename_alter y modifique el array de nombres de archivo.
- Cuando imprima en contexto CLI (drush, trabajadores de cola), configure la URL base para asegurar la generación correcta de URLs absolutas.
- Use el formateador de imagen codificada en Base64 para campos de imagen en el modo de visualización PDF para evitar problemas de carga de URLs externas con algunos motores PDF.
Technical Details
Admin Pages 1
/admin/config/content/entityprint
Configura el motor de impresión predeterminado para cada tipo de exportación (PDF, EPub, documento Word) y configuraciones globales para la generación de PDF incluyendo CSS predeterminado, comportamiento de descarga forzada y URL base para uso CLI.
Permissions 5
Troubleshooting 5
Asegúrese de que 'Habilitar URLs remotas' esté marcado en la configuración de Dompdf. Para archivos privados, el módulo reenvía automáticamente las cookies de sesión. Considere usar el formateador de imagen codificada en Base64 para imágenes problemáticas.
Agregue CSS a su tema dirigido al modo de visualización 'pdf' o use la biblioteca entity_print. Verifique que los archivos CSS estén correctamente adjuntos vía libraries.yml. Use el endpoint /debug para inspeccionar los estilos aplicados.
Verifique que la ruta del binario en la configuración sea correcta. Asegúrese de que el binario wkhtmltopdf sea ejecutable por el usuario del servidor web. Revise los logs del servidor para errores de permisos.
Use fuentes seguras para web o asegúrese de que las fuentes personalizadas estén correctamente embebidas. El CSS predeterminado usa DejaVu Sans que está comúnmente disponible. Para fuentes personalizadas con DomPdf, configure las opciones del directorio de fuentes.
Para documentos grandes o Views, aumente PHP max_execution_time. Considere usar wkhtmltopdf para mejor rendimiento con HTML complejo. Para Views, limite el número de elementos por página.
Security Notes 5
- Las credenciales de autenticación HTTP para motores PDF se almacenan en texto plano en la configuración. Use variables de entorno o gestión de secretos para credenciales sensibles.
- Las configuraciones de verificación de par SSL solo deben deshabilitarse en entornos de desarrollo, nunca en producción.
- La generación de PDF puede ser intensiva en recursos. Considere limitar la tasa de solicitudes de impresión en entornos de alto tráfico.
- El permiso 'administer entity print' está marcado como acceso restringido y solo debe otorgarse a administradores de confianza.
- Cuando use savePrintable() programáticamente, tenga en cuenta que el esquema predeterminado es 'public' lo que hace los archivos accesibles por web. Use el esquema 'private' para documentos sensibles.