Para começar, você precisa instalar o pacote DomPDF. Pode fazer isso usando o Composer. Abra o terminal e execute o seguinte comando:
composer require barryvdh/laravel-dompdf
Após instalar o pacote, você deve registrar o serviço no arquivo de configuração config/app.php
. No entanto, se estiver usando Laravel 5.5 ou superior, este passo é automático graças ao autoloading de pacotes.
Se quiser modificar a configuração padrão do DomPDF, você pode publicar o arquivo de configuração:
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
Isso criará um arquivo config/dompdf.php
onde você pode ajustar as configurações conforme suas necessidades.
Agora, crie uma rota e um controlador para lidar com a geração do PDF.
Você pode criar um controlador usando o comando artisan:
php artisan make:controller PDFController
Abra o arquivo routes/web.php
e defina uma rota para gerar o PDF:
use App\Http\Controllers\PDFController;
Route::get('generate-pdf', [PDFController::class, 'generatePDF']);
Crie uma view que servirá como o template para o conteúdo do PDF. No diretório resources/views
, crie um arquivo chamado pdf_template.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>Template PDF</title>
</head>
<body>
<h1>Relatório de Usuários</h1>
<table border="1" cellpadding="10">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
No seu controlador PDFController
, adicione o método generatePDF
para gerar o PDF usando o DomPDF:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PDF; // Importa o facade do DomPDF
use App\Models\User; // Importa o seu modelo de Usuário
class PDFController extends Controller
{
public function generatePDF()
{
$users = User::all();
$pdf = PDF::loadView('pdf_template', ['users' => $users]);
return $pdf->download('usuarios.pdf');
}
}
Nesse método, primeiro recuperamos todos os usuários do banco de dados e, em seguida, carregamos a view pdf_template
passando os dados dos usuários. Por fim, geramos o PDF e o baixamos.
Inicie o servidor de desenvolvimento do Laravel:
php artisan serve
Visite http://localhost:8000/generate-pdf
no seu navegador. Isso deve gerar e baixar um arquivo PDF chamado usuarios.pdf
com a lista de usuários.
Você pode personalizar a configuração do DomPDF através do arquivo config/dompdf.php
publicado anteriormente. Aqui você pode ajustar opções como o tamanho da página, a orientação, e mais.
Para adicionar estilos CSS ao seu PDF, basta incluir o CSS na sua view pdf_template.blade.php
. O DomPDF suporta CSS inline e arquivos CSS externos.
O DomPDF também pode renderizar imagens no PDF. Certifique-se de usar caminhos absolutos ou URLs para as imagens.
Se você estiver gerando muitos PDFs com o mesmo template, considere habilitar o cache de views do Blade para melhorar o desempenho. Você pode fazer isso adicionando config(['dompdf.defines.enable_html5_parser' => true]);
no seu controlador.
Integrar o DomPDF no Laravel é um processo simples que permite gerar documentos PDF com facilidade. Seguindo os passos deste artigo, você pode configurar o DomPDF, criar templates de views e gerar arquivos PDF com dados dinâmicos da sua aplicação. Com o DomPDF, você tem flexibilidade para personalizar o conteúdo e os estilos dos seus PDFs conforme as suas necessidades.
Jorge García
Fullstack developer