Comparte en Facebook Twitter Google+

banner-pdf-con-snappy

Presentar información en formato PDF es uno de las peticiones más usuales por parte de nuestros clientes ya sea para informes privados o algún reporte hacía los usuarios que ocupan el sistema.

En un post anterior @jeffer8a nos mostró cómo hacer uso del paquete DomPdf desarrollado por barryvdh, pero algunas veces tenemos que usar una plantilla HTML diseñada con Foundation o Bootstrap para generar el PDF . Este es un inconveniente con DomPDF ya que no permite el uso de este tipo de framworks. Es ahí donde puede usarse el Laravel-Snappy , el cual es un Service Provider de Snappy.

Lo primero que se debe realizar es instalar un componente necesario llamado wkhtmltopdf . Existe dos maneras de poder realizar este paso, ya sea instalarlo directamente en el servidor o con el uso de composer. La primera opción es viable si eres el administrador del servidor, mientras que la segunda es si cuentas con un acceso limitado.  En esta ocasión usaremos la segunda opción.

Instalación

Editamos composer.json para descargar los archivos binarios de wkhtmltopdf.

Para sistemas de 32 bits

Para sistemas de 64 bits

Actualizamos las dependencias con composer:

Y con esto ahora encontramos una carpeta llamada “h4cc” dentro del directorio vendor.

Para estar seguros que todo funciona realizamos una prueba llamando directamente al archivo binario agregando la bandera para mostrar la versión instalada.
Si instalaste el paquete de 32 bits

Si instalaste el paquete de 64 bits

Esto nos muestra algo como lo siguiente:

Al momento de realizar este proceso puede ser que necesites ciertos paquetes en tu sistema, en mi caso fueron dos:
1.- No se encontraba la librería llamada ‘libXrender.so.1’
Solución:

2.- No se encuentra la librería ‘libXext.so.6’
Solución:

Con esto ya deberíamos tener una respuesta de ‘wkhtmltopdf

Instalando Laravel-Snappy

En la sección de require del archivo de composer.json agregamos:

Actualizamos composer:

Configuración de Laravel Snappy

Agregamos el Service Provider en el archive app.php, ubicado en el directorio config:

Agregamos los alias:

En consola ejecutamos:

Vamos al archivo snappy.php copiado en el directorio config y lo editamos colocando la ruta donde se puede encontrar el archivo binario que instalar al principio.

Es decir, modificamos las rutas de binary  según el sistema que tengamos:

Para sistema de 32 bits

Para sistema de 64 bits

Con esto ya tenemos instalado y configurado el paquete de Laravel-Snappy. Es hora de implementarlo.

Uso

Para pruebas podemos crear una ruta:

Y un controlador:

Dentro de este nuevo controlador realizamos lo siguiente.

y obtenemos el archivo:

snappy-pdf-resultante

Si deseas regresar una vista puedes hacer uso del método loadView y que se descargue al momento:

Es todo. Espero te sirva de mucha ayuda. Recuerda que puedes dejar tus dudas en la sección de comentarios.

Material relacionado

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección anterior Traducciones con el componente Styde\Html Lección siguiente Importar datos desde Excel o CSV a Laravel