Voltar à página principal
terça-feira 17 setembro 2024
21

Como criar PDF no Laravel

1. Instalação do DomPDF

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

2. Configuração do Pacote

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.

Publicar a Configuração

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.

3. Criar uma Rota e um Controlador

Agora, crie uma rota e um controlador para lidar com a geração do PDF.

Criar o Controlador

Você pode criar um controlador usando o comando artisan:

php artisan make:controller PDFController

Definir a Rota

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']);

4. Criar a View para o PDF

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>

5. Gerar o PDF

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.

6. Testar a Aplicação

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.

7. Personalização e Opções Adicionais

Opções de Configuração

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.

Estilos CSS

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.

Renderização de Imagens

O DomPDF também pode renderizar imagens no PDF. Certifique-se de usar caminhos absolutos ou URLs para as imagens.

Cache de Templates

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.

Conclusão

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.

Compartilhar:
Criado por:
Author photo

Jorge García

Fullstack developer