laravel

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:

See the gist on github.

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:

See the gist on github.

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:

See the gist on github.

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:

See the gist on github.

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

See the gist on github.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

3 horas hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

3 horas hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

6 horas hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

10 horas hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

5 días hace

Esta web usa cookies.