DOM PDF

Link de acesso a documentação no GitHub:

https://github.com/barryvdh/laravel-dompdf

Ferramentas

Para gerar PDF no Laravel vamos utilizar uma importante e conhecido pacote chamado DOMPDF.

Primeiramente execute o comando abaixo para fazer a instalação deste pacote no Laravel rode o comando:

composer require barryvdh/laravel-dompdf

Segundo as instruções do tutorial: "Após baixar o pacote precisa registrar o provider e aliases (no Laravel 5.5 não precisa porque o recurso de autodiscover faz isso automaticamente).". Como utilizamos a versão do Laravel 5.6, vamos ao próximo passo.

Adicione os providers:

/config/app.php

Barryvdh\DomPDF\ServiceProvider::class,

E em aliases adicione:

/config/app.php

'PDF' => Barryvdh\DomPDF\Facade::class,

Para gerar o arquivo de configuração e ter a possibilidade de alterar algumas configurações padrões rode este comando:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

Após rodar o comando irá gerar um arquivo de configuração do DOMPDF em /config/dompdf.php

Feito isso o pacote está instalado e registrado.

Utilizando

Crie a função no controller que deseja imprimir o PDF.

ExemploController.php

use PDF;
public function fun_pdf($id)
{
    $pdf = PDF::loadView('eps_aws.showPDF');
    return $pdf->download('invoice.pdf');
}

(ou use a função 'stream' no lugar de 'download')

Se for necessario passar argumentos por variaveis para a view imprimir você deve utilizar o parametro compact para enviar os dados.

Exemplo2Controller.php

use PDF;

$name_pass = DB::table("passes")->where('id', (int)$data->pass)
        ->pluck('name')
        ->all();

$name_electrodes = DB::table("electrodes")->where('id', (int)$data->electrodes)
        ->pluck('name')
        ->all();

public function fun_pdf($id)
{
    $pdf = PDF::loadView('eps_aws.showPDF', compact('name_pass', 'name_electrodes'));
    return $pdf->download('invoice.pdf');
}

E ajuste uma rota para que a função seja chamada.

routes/web.php

Route::get('eps_aws/pdf/{id}', 'ExemploController@fun_pdf');

Repare que deixei o "{id}" para que na geração de documentos ele pegue os dados pelo id e ja os jogue no PDF. Para que no botão de importar para PDF possa ser feito do seguinte modo:

<a class="btn btn-sm btn-primary" href="{{ url('eps_aws/pdf', $data->id) }}">
  {{ trans('buttons.downloadPDF') }}
</a>

Pronto!

O seu PDF terá um resultado semelhante a esse:

(obs: lembre-se que um PDF é um documento bem mais simples e por isso ele não suporta varias Tags de estilo CSS e HTML. E o DOMPDF também não suporta o bootstrap até o momento).

Referências

Carlos Ferreitaopen in new window. Gerar PDF no Laravel com DOMPDF. https://blog.especializati.com.br/gerar-pdf-no-laravel-com-dompdf/open in new windowAcesso em: 14 dez 2019.

Last Updated:
Contributors: Maicon Cerutti