Volver a la página principal
domingo 7 julio 2024
92

Cómo crear PDF en Laravel

1. Instalación de DomPDF

Para empezar, necesitas instalar el paquete DomPDF. Puedes hacerlo utilizando Composer. Abre tu terminal y ejecuta el siguiente comando:

composer require barryvdh/laravel-dompdf

2. Configuración del Paquete

Después de instalar el paquete, debes registrar el servicio en tu archivo de configuración config/app.php. Sin embargo, si estás utilizando Laravel 5.5 o superior, este paso es automático gracias al autoloading de paquetes.

Publicar la Configuración

Si deseas modificar la configuración predeterminada de DomPDF, puedes publicar el archivo de configuración:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

Esto creará un archivo config/dompdf.php donde puedes ajustar las configuraciones según tus necesidades.

3. Crear una Ruta y un Controlador

Ahora, crea una ruta y un controlador para manejar la generación del PDF.

Crear el Controlador

Puedes crear un controlador usando el comando artisan:

php artisan make:controller PDFController

Definir la Ruta

Abre el archivo routes/web.php y define una ruta para generar el PDF:

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

4. Crear la Vista para el PDF

Crea una vista que servirá como la plantilla para el contenido del PDF. En resources/views, crea un archivo llamado pdf_template.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>PDF Template</title>
</head>
<body>
    <h1>Reporte de Usuarios</h1>
    <table border="1" cellpadding="10">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nombre</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            @foreach($users as $user)
            <tr>
                <td>{{ $user->id }}</td>
                <td>{{ $user->name }}</td>
                <td>{{ $user->email }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>
</body>
</html>

5. Generar el PDF

En tu controlador PDFController, añade el método generatePDF para generar el PDF usando DomPDF:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PDF; // Importa el facade de DomPDF
use App\Models\User; // Importa tu modelo de Usuario

class PDFController extends Controller
{
    public function generatePDF()
    {
        $users = User::all();

        $pdf = PDF::loadView('pdf_template', ['users' => $users]);

        return $pdf->download('usuarios.pdf');
    }
}

En este método, primero recuperamos todos los usuarios de la base de datos y luego cargamos la vista pdf_template pasándole los datos de los usuarios. Finalmente, generamos el PDF y lo descargamos.

6. Probar la Aplicación

Inicia el servidor de desarrollo de Laravel:

php artisan serve

Visita http://localhost:8000/generate-pdf en tu navegador. Esto debería generar y descargar un archivo PDF llamado usuarios.pdf con la lista de usuarios.

7. Personalización y Opciones Adicionales

Opciones de Configuración

Puedes personalizar la configuración de DomPDF a través del archivo config/dompdf.php publicado anteriormente. Aquí puedes ajustar opciones como el tamaño de la página, la orientación, y más.

Estilos CSS

Para añadir estilos CSS a tu PDF, simplemente incluye el CSS en tu vista pdf_template.blade.php. DomPDF soporta CSS en línea y archivos CSS externos.

Renderizado de Imágenes

DomPDF también puede renderizar imágenes en el PDF. Asegúrate de usar rutas absolutas o URLs para las imágenes.

Cache de Plantillas

Si estás generando muchos PDF con la misma plantilla, considera habilitar la caché de vistas de Blade para mejorar el rendimiento. Puedes hacerlo añadiendo config(['dompdf.defines.enable_html5_parser' => true]); en tu controlador.

Conclusión

Integrar DomPDF en Laravel es un proceso sencillo que te permite generar documentos PDF fácilmente. Siguiendo los pasos de este artículo, puedes configurar DomPDF, crear plantillas de vistas y generar archivos PDF con datos dinámicos de tu aplicación. Con DomPDF, tienes la flexibilidad de personalizar el contenido y los estilos de tus PDFs según tus necesidades.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer