Creare PDF in Laravel con Dompdf

Mattepuffo's logo
Creare PDF in Laravel con Dompdf

Creare PDF in Laravel con Dompdf

Dompdf l'abbiamo già vista; è una libreria per PHP che consente di creare PDF partendo dall'HTML.

Oggi vediamo come usarla in Laravel.

Iniziamo con installare la libreria nel progetto con Composer:

$ composer require barryvdh/laravel-dompdf

(Può essere che dobbiate ricaricare tutta la cartella vendor dopo l'installazione).

Poi create un controller:

$ php artisan make:controller TestController

Qui dentro mettiamoci una cosa del genere:

namespace App\Http\Controllers;

use Barryvdh\DomPDF\Facade as PDF;

class TestController extends Controller {

    public function index() {
        $data = array(
            'nome' => 'Mattepuffo'
        );
        $pdf = PDF::loadView('pdf', ['data' => $data]);
        return $pdf->download('test.pdf');
    }

}

Quell'array $data contiene i valori che passeremo alla view; createne una dentro resources/views col nome pdf.blade.php:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title></title>
    </head>
    <body>
        <style>
            @page {
                margin: 0 0;
            }

            body {
                margin-top: 3.3cm;
                margin-left: 2cm;
                margin-right: 2cm;
                margin-bottom: 2cm;
                font-size: 14px;
            }

            header {
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                height: 1cm;
                background-color: cadetblue;
            }

            footer {
                position: fixed;
                bottom: 0;
                left: 0;
                right: 0;
                height: 2cm;
                text-align: center;
                background-color: chocolate;
            }
        </style>

        <header>
            HEADER
        </header>

        <footer>
            FOOTER
        </footer>

        <main>

            <div>
                {{$data['nome']}}
            </div>

        </main>

    </body>
</html>

Qui abbiamo impostato header e footer fissi, e abbiamo visualizzato il valore nel centro pagina.

Infine nel file api.php aggiungiamo la nostra route:

Route::get('/test', [TestController::class, 'index']);

Enjoy!


Condividi

Commentami!