Para empezar, necesitas instalar el paquete DomPDF. Puedes hacerlo utilizando Composer. Abre tu terminal y ejecuta el siguiente comando:
composer require barryvdh/laravel-dompdf
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.
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.
Ahora, crea una ruta y un controlador para manejar la generación del PDF.
Puedes crear un controlador usando el comando artisan:
php artisan make:controller PDFController
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']);
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>
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.
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.
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.
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.
DomPDF también puede renderizar imágenes en el PDF. Asegúrate de usar rutas absolutas o URLs para las imágenes.
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.
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.
Jorge García
Fullstack developer