Mostrando entradas con la etiqueta generar el archivo PDF. Mostrar todas las entradas
Mostrando entradas con la etiqueta generar el archivo PDF. Mostrar todas las entradas

viernes, 26 de mayo de 2017


En este tutorial, le enseñare cómo generar archivos PDF a partir de la vista HTML en laravel 5.4 mediante el uso de laravel-dompdfpaquete.

En Internet hay un montón de paquetes que se pueden usar para generar PDF utilizando HTML y CSS, se puede hacer bonitos diseño para crear un PDF, eso depende de usted.

El uso de la biblioteca laravel-dompdfla, puede generar fácilmente archivos PDF en su aplicación web laravel. Puedes ir a su documentación oficial presionando aqui.

La generación de archivos PDF es útil cuando se necesita enviar informes, a los correos electrónicos de tus usuarios a gran cantidad, para hacer esto puedes convertir su vista HTML en archivo PDF y luego conectar con su correo y enviársela.

Dompdf es una librería PHP que se utiliza para generar el archivo PDF a partir de la vista HTML.

Instalación de paquete laravel-dompdfla:

En este paso vamos a instalar el paquete laravel-dompdf para generar archivos pdf desde el archivo de vista de hoja de HTML. Puede usar composer para descargar estos complementos, así que copie el siguiente comando y ejecútelo en su terminal.


composer require barryvdh/laravel-dompdf

Ahora, después de descargar las bibliotecas, tendrá que configurar su proveedor de servicios y su alias, en la ruta config/app.php


'providers' => [
    ...
    ...
    Barryvdh\DomPDF\ServiceProvider::class,
],


'aliases' => [
    ...
    ...
    'PDF' => Barryvdh\DomPDF\Facade::class,
],

En este paso me imagino que ya logro instalar el paquete laravel-dompdf así que vamos a empezar con el archivo de rutas.

Agrega la siguiente línea de código en tu archivo web.php que estará en la siguiente ruta routes/web.php.

Nota: En versiones anteriores a laravel 5.3 este archivo se encontraba en la siguiente ruta app/Http/routes.php.


Route::get('vista-html-pdf',array(
    'as'=>'vistaHTMLPDF',
    'uses'=>'ProductoController@vistaHTMLPDF'
));


Ahora voy a crear ProductoController y asumiré que usted ya tiene un modelo de producto y una tabla con algunos datos ficticios para mandar a  nuestra vista.

En el método vistaHTMLPDF , estoy compartiendo una variable global productos que puede utilizar en cualquier lugar de la aplicación y utilizo la clase pdf para cargar la vista para generar en archivo pdf.

app/Http/Controllers/ProductoController.php


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Producto;
use PDF;

class ProductoController extends Controller
{
    

    public function vistaHTMLPDF(Request $request)
    {
        $productos = Producto::all();//OBTENGO TODOS MIS PRODUCTO
        view()->share('productos',$productos);//VARIABLE GLOBAL PRODUCTOS
        if($request->has('descargar')){
            $pdf = PDF::loadView('vista-html-pdf');//CARGO LA VISTA
            return $pdf->download('toda-la-lista-de-productos');//SUGERIR NOMBRE A DESCARGAR
        }
        return view('vista-html-pdf');//RETORNO A MI VISTA
    }


    
}


Por último, vamos a crear una vista en la que se va a mostrar en una tabla todos los productos y que también  generará la vista del  archivo PDF. La vista del archivo PDF puede estar en otra vista, pero nosotros usaremos esta misma vista vista-html-pdf.blade.php para el ejemplo.

resources/view/vista-html-pdf.blade.blade.php

<style>
    table, th, td {
        border: 1px solid black;
    }
</style>

<br><br>
<div class="row">
    <a href="{{ route('vistaHTMLPDF',['descargar'=>'pdf']) }}">Descargar PDF</a>

    <br><br>
    <table>
        <tr>
            <th>Nombre</th>
            <th>Detalles</th>
        </tr>
        @foreach ($productos as $producto)
        <tr>
            <td>{{ $producto->nombre }}</td>
            <td>{{ $producto->descripcion }}</td>
        </tr>
        @endforeach
    </table>
</div>

Corremos nuestro servidor php artisan serve y tendremos una vista así:

Crear PDF de una vista HTML utilizando Laravel
Y quedaría esta bonita vista, Le damos a descargar y listo :) Nota: No se desanimen con el PDF generado, ustedes hagan otras con mejores estilos :) Gracias




Category: articles