Crear PDF con Laravel

En este post te mostraré cómo crear o generar un PDF usando Laravel y las ventajas que nos ofrece este framework.

Vamos a usar la librería dompdf que, en combinación con Laravel y una librería extra, nos permitirá renderizar vistas de Blade y convertirlas a PDF de una manera realmente sencilla.

Asumo para este caso que ya sabes usar Laravel al menos de manera mínima, y que gestionas las dependencias de tu proyecto con composer.

También me gustaría recomendarte mi post sobre dompdf con php nativo; que si bien no es necesario, te ayudará a ver qué otras cosas puedes hacer. Entre los ejemplos está una factura con Bootstrap 3 o un ticket para impresora térmica.

Instalando soporte para dompdf

Vamos a usar la maravillosa envoltura creada por barryvdh que combinará las ventajas de Laravel con dompdf. Para ello instalamos con:

composer require barryvdh/laravel-dompdf

Ahora modificamos config/app.php y dentro del arreglo de providers agregamos:

Barryvdh\DomPDF\ServiceProvider::class,

Solo para ejemplificar, todo mi app.php queda así. Presta atención a la línea 169:

Con esto basta. Ahora viene un paso importante y es que cada que necesitemos usar esta envoltura necesitaremos crear una instancia con App::make y para ello debemos indicar el uso del namespace al inicio del archivo, con:

use Illuminate\Support\Facades\App;

Eso es todo lo que necesitamos.

Generando PDF

Ahora podemos generar un PDF desde Laravel a partir de una vista de Blade. Un ejemplo básico es la siguiente vista:

En este caso solo estoy renderizando la variable $nombre pero se puede usar cualquier función de blade (@foreach, @if, etcétera). Además, no es necesario colocar todo el esqueleto, puedes heredar de vistas si quieres.

Ahora vamos a generar el PDF a partir de esta vista. Creamos la instancia, luego invocamos a loadView para cargar y renderizar la vista de Blade, pasándole datos y finalmente invocamos a stream para mostrarlo directamente en el navegador.

Lo he colocado en una ruta, pero tú puedes colocarlo dentro de un controlador o en donde mejor te convenga:

Aquí vemos que estoy cargando la vista llamada ejemplo. En realidad el archivo se llama ejemplo.blade.php pero para cargarla desde Laravel solo se necesita el nombre (por cierto el archivo de la vista está en views).

Le pasamos las variables en un arreglo como segundo argumento y finalmente devolvemos el contenido del PDF para mostrarlo en el navegador.

PDF creado con Laravel

Otras opciones del PDF: guardar y descargar

Además de mostrar el PDF creado con Laravel en el navegador, podemos guardarlo en el disco duro o forzar su descarga.

Por ejemplo, para descargar el PDF invocamos al método download pasándole el nombre que queremos que se sugiera para el archivo:

Igualmente si quieres guardarlo en el disco duro, se puede hacer con:

Nota: para este ejemplo, se guardará en public. También puedes especificar la ruta absoluta.

En este caso no podemos devolver el resultado de save, así que devuelvo una simple cadena, pero en tu caso puedes devolver lo que gustes, hacer un redirect, etcétera.

Conclusión

Vas a encontrar más ejemplos y documentación en el repositorio oficial. Recuerda que esta librería une a dompdf con Laravel, de una manera sencilla y rápida.

Como te mencionaba anteriormente, este fue un ejemplo sencillo. Puedes generar todo esto a partir de una base de datos, formularios, etcétera. La imaginación es el límite.

Para terminar, te invito a ver más tutoriales de Laravel en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario