Descripción General
El sistema genera reportes PDF para documentos electrónicos (facturas, boletas, guías de remisión, cotizaciones y órdenes de compra) utilizando la librería mPDF. Los PDFs se pueden generar en dos formatos: A4 (tamaño estándar) y Ticket (80mm para impresoras térmicas).Controladores de PDF Disponibles
VentaPdfController
Genera PDFs para ventas (facturas, boletas y notas de venta). Ubicación:app/Http/Controllers/Reportes/VentaPdfController.php
Métodos Disponibles
generarA4($id)- Genera PDF en formato A4generarTicket($id)- Genera PDF en formato Ticket (80mm)
- Incluye código QR con datos del comprobante
- Soporte para plantillas de impresión personalizadas
- Muestra información de empresa, cliente y productos
- Incluye totales, subtotales e IGV
GuiaRemisionPdfController
Genera PDFs para guías de remisión electrónicas. Ubicación:app/Http/Controllers/Reportes/GuiaRemisionPdfController.php
Métodos Disponibles
generarA4($id)- Genera PDF en formato A4
- Código QR para verificación
- Información de traslado (origen, destino, transportista)
- Listado de productos transportados
- Soporte para plantillas personalizadas
CotizacionPdfController
Genera PDFs para cotizaciones. Ubicación:app/Http/Controllers/Reportes/CotizacionPdfController.php
Métodos Disponibles
generarA4($id)- Genera PDF en formato A4generarTicket($id)- Genera PDF en formato Ticket (80mm)
CompraPdfController
Genera PDFs para órdenes de compra. Ubicación:app/Http/Controllers/Reportes/CompraPdfController.php
Métodos Disponibles
generarA4($id)- Genera PDF en formato A4generarTicket($id)- Genera PDF en formato Ticket (80mm)
Configuración de mPDF
Formato A4
Formato Ticket (80mm)
Rutas de Acceso
Rutas Web (con TokenFromQuery middleware)
Las rutas de PDF están configuradas enroutes/web.php:
Autenticación con Token en URL
Middleware TokenFromQuery
Para permitir la descarga de PDFs desde el navegador usando enlaces directos, el sistema utiliza el middlewareTokenFromQuery que acepta el token de autenticación como parámetro en la URL.
Ubicación: app/Http/Middleware/TokenFromQuery.php
Cómo Funciona
- El middleware revisa si existe un parámetro
tokenen la URL - Si existe y no hay un token Bearer en los headers, lo agrega automáticamente
- Permite autenticación tanto por header como por query string
Configuración en api.php
El middleware se aplica a todas las rutas protegidas:Ejemplos de Uso
Descargar PDF de Venta (Formato A4)
Descargar PDF de Venta (Formato Ticket)
Descargar PDF de Guía de Remisión
Descargar PDF de Cotización
Descargar PDF de Orden de Compra
Generación de Código QR
Los PDFs de documentos electrónicos incluyen códigos QR generados con el helperQrHelper:
- RUC del emisor
- Tipo de documento
- Serie y número
- Fecha de emisión
- Totales
- Hash del documento (si está firmado)
Plantillas de Impresión
El sistema soporta plantillas personalizadas por empresa:Manejo de Errores
Todos los controladores de PDF manejan dos tipos de errores:Documento No Encontrado (404)
Error General (500)
Configuración del Título PDF
Cada PDF tiene un título descriptivo:Renderizado y Salida
Los PDFs se renderizan desde vistas Blade:Mejores Prácticas
- Siempre incluir el token en las URLs de PDF para mantener la autenticación
- Usar formato A4 para impresiones formales y archivo
- Usar formato Ticket para impresoras térmicas punto de venta
- Configurar tempDir apuntando a
storage/app/mpdfpara archivos temporales - Ajustar márgenes según el tipo de documento y formato
- Incluir código QR en documentos electrónicos para cumplir normativa SUNAT
- Registrar errores en logs para debugging y auditoría
- Cargar relaciones necesarias con
with()para evitar queries N+1
Directorios de Almacenamiento
- Archivos temporales mPDF:
storage/app/mpdf/ - Vistas de reportes:
resources/views/reportes/ - Plantillas de impresión: Tabla
plantillas_impresionen base de datos