Xerar informes PDF en Laravel 5.5

Gústame (1)

Neste tutorial aprenderá a xerar ficheiros PDF de Laravel 5.5, a idea é crear Unha táboa de produtos, listalos e despois xerar un PDF en función destes datos. Dende que teño a canle que me pediron que ensinase como xerar PDF de Laravel 5.5 e aquí o teñen. Nesta oportunidade utilizaremos o paquete creado polo Gran Barryvdh.

Asegúrese de practicar nun sistema de lava desde cero ou tamén pode descargar o código do noso github

Para a instalación do compoñente que escribimos o seguinte no terminal composer require barryvdh/laravel-dompdf

Despois da instalación, configuraremos de inmediato o que é necesario en config/app.php

base de datos (opcional, eu Falo para facer un exemplo con datos)

imos comezar a crear o controlador de ficheiros necesarios, entidade, fábrica e migración co comando

O parámetro -unha refírese a – todo e crea controlador, entidade, fábrica e migración

Para este exercicio non facemos nada na entidadeapp/Product.php

Configurar a fábrica en database/factories/ProductFactory.php

<?phpuse Faker\Generator as Faker;$factory->define(App\Product::class, function (Faker $faker) { return ;});

Migración que o configuramos como segue

<?phpuse Illuminate\Support\Facades\Schema;use Illuminate\Database\Schema\Blueprint;use Illuminate\Database\Migrations\Migration;class CreateProductsTable extends Migration{ /** * Run the migrations. * * @return void */ public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->text('description'); $table->integer('stock'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('products'); }}

agora Creamos a sección co comando php artisan make:seeder ProductsTableSeeder e coloca o seguinte código.

<?phpuse Illuminate\Database\Seeder;class ProductsTableSeeder extends Seeder{ /** * Run the database seeds. * * @return void */ public function run() { factory(App\Product::class, 12)->create(); }}

Agora si, con este listo Executamos o comando que creará as táboas e enchelas con datos php artisan migrate:refresh --seed

Importante: ten que crear a súa base de datos e configurar o nome, usuario e contrasinal no ficheiro .env

Creación do sistema

Cando teña listo todo relacionado con Base de datos, instalación e configuración que imos ao ficheiro de ruta routes/web.php e para o exercicio que usamos dúas (2) rutas.

<?phpRoute::get('/', '')->name('products');Route::get('descargar-productos', '')->name('products.pdf');

no controlador app/Http/Controllers/ProductController.php usamos dous métodos para ilustrar este exemplo.

<?phpnamespace App\Http\Controllers;use App\Product;use Illuminate\Http\Request;use Barryvdh\DomPDF\Facade as PDF;class ProductController extends Controller{ public function index() { $products = Product::all(); return view('products', compact('products')); } public function pdf() { /** * toma en cuenta que para ver los mismos * datos debemos hacer la misma consulta **/ $products = Product::all(); $pdf = PDF::loadView('pdf.products', compact('products')); return $pdf->download('listado.pdf'); }}

no Usamos o C omponent e o que necesitamos facer é traballar co comando PDF::loadView para cargar unha vista xa preparada e onde se tomará o deseño para o PDF.

imos Para deseñar

vistas

ficheiro resources/views/layout.blade.php

<!doctype html><html lang="es"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <title>Laravel y data en PDF | Rimorsoft Online</title> </head> <body> <div class="container"> <div class="row"> <div class="col-xs-12"> @yield('content') </div> </div> </div> </body></html>

ficheiro resources/views/products.blade.php

@extends('layout')@section('content') <h1 class="page-header">Listado de productos</h1> <table class="table table-hover table-striped"> <thead> <tr> <th>ID</th> <th>Producto</th> <th>Descripción</th> <th>Stock</th> </tr> </thead> <tbody> @foreach($products as $product) <tr> <td>{{ $product->id }}</td> <td>{{ $product->name }}</td> <td>{{ $product->description }}</td> <td class="text-right">{{ $product->stock }}</td> </tr> @endforeach </tbody> </table> <hr> <p> <a href="{{ route('products.pdf') }}" class="btn btn-sm btn-primary"> Descargar productos en PDF </a> </p>@endsection

ficheiro resources/views/pdf/produtcs.blade.php

@extends('layout')@section('content') <table class="table table-hover table-striped"> <thead> <tr> <th>ID</th> <th>Producto</th> <th>Descripción</th> <th>Stock</th> </tr> </thead> <tbody> @foreach($products as $product) <tr> <td>{{ $product->id }}</td> <td>{{ $product->name }}</td> <td>{{ $product->description }}</td> <td class="text-right">{{ $product->stock }}</td> </tr> @endforeach </tbody> </table>@endsection

Nas opinións que viches como aínda estamos falando de Laravel Language, sen tales trauma ou cousas complicadas, basicamente conseguímolo basicamente co gran compoñente barryvdh/laravel-dompdf

Os ficheiros están en https://github.com/rimorsoft/Generar-PDF-en-Laravel-5.5

Se chegas aquí, dime que pensas? E que desexa ver nesta páxina? Vémolo no seguinte post.

  • Ernesto Canquiz

ITALO MORALES F. 6,705,00 XP

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *