"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Gerando documentos PDF no Laravel

Gerando documentos PDF no Laravel

Publicado em 16/08/2024
Navegar:250

Generating PDF documents in Laravel

Laravel e DomPDF: Guia passo a passo para gerar documentos PDF com imagens e CSS

A criação de documentos PDF é um requisito comum em aplicações web, especialmente para geração de faturas, recibos, certificados, tickets e relatórios diversos. Neste tutorial abrangente, nos aprofundaremos no uso do Laravel e DomPDF para gerar documentos PDF com imagens e CSS. Abordaremos opções de configuração, considerações de design, tamanho de saída, desempenho e consultas de banco de dados. Além disso, discutiremos dicas e truques para lidar com quebras de página, carregar imagens usando base64 e muito mais.

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte instalado:

  • PHP >=8.2
  • Compositor 2
  • Laravel 10

Introdução

DomPDF é uma biblioteca PHP popular que permite gerar documentos PDF a partir de conteúdo HTML. Suporta estilo CSS, imagens e várias opções de configuração. Ao integrar o DomPDF ao Laravel, você pode criar facilmente documentos PDF sofisticados usando modelos Blade e os recursos poderosos do Laravel.

Outras bibliotecas PDF populares incluem TCPDF, FPDF e Snappy.

No entanto, DomPDF é amplamente utilizado devido à sua facilidade de integração e conjunto robusto de recursos.

Neste tutorial, percorreremos o processo de configuração de um projeto Laravel, configuração do DomPDF, criação de um controlador para lidar com a geração de PDF, design de um modelo Blade para o conteúdo PDF, adição de rotas e otimização de desempenho. Também discutiremos opções de configuração avançada e forneceremos dicas e truques para gerar documentos PDF de alta qualidade.

Suposições

Este tutorial pressupõe que você tenha um conhecimento básico de Laravel e PHP. Se você é novo no Laravel, considere consultar a documentação oficial do Laravel para se familiarizar com o framework. Caso contrário, você pode seguir o Laravel Bootcamp para começar a usar o Laravel.

Etapa 1: Configurando o Projeto Laravel

Primeiro, crie um novo projeto Laravel se ainda não tiver um, ou use um projeto existente. Claro, você pode pular esta etapa se já tiver um projeto Laravel.

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial

Em seguida, instale o DomPDF:

composer require barryvdh/laravel-dompdf

Publique o arquivo de configuração:

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

Passo 2: Configurando DomPDF

Abra o arquivo config/dompdf.php. O arquivo de configuração contém várias opções para personalizar a saída do PDF. Aqui você pode definir várias opções, incluindo tamanho de papel padrão, orientação, fonte e muito mais.

  • Tamanho do papel: Você pode definir o tamanho de papel padrão.
  'default_paper_size' => 'a4',
  • Orientação: Defina a orientação padrão (retrato ou paisagem).
  'orientation' => 'portrait',
  • Fonte: Você pode especificar a fonte padrão e adicionar fontes personalizadas.
  'default_font' => 'serif',

Etapa 3: Criando um Controlador

Crie um controlador para lidar com a geração de PDF:

php artisan make:controller PDFController

Em app/Http/Controllers/PDFController.php, adicione o seguinte código:

 'Laravel PDF Example',
            'date' => date('m/d/Y'),
        ];

        $pdf = PDF::loadView('myPDF', $data);

        return $pdf->download('document.pdf');
    }
}

Etapa 4: Criando um modelo Blade

Crie um modelo Blade para o conteúdo PDF:

touch resources/views/myPDF.blade.php

Adicione o seguinte conteúdo a myPDF.blade.php:



    Laravel PDF Example

{{ $title }}

Date: {{ $date }}

This is an example of a PDF document generated using Laravel and DomPDF.

Passo 5: Adicionando Rotas

Adicione rotas para lidar com a geração de PDF em rotas/web.php:

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

Etapa 6: adicionar imagens

Você pode adicionar imagens ao PDF incorporando-as como strings codificadas em base64 ou usando URLs.

As imagens podem ser incorporadas diretamente no modelo Blade usando codificação base64. Por exemplo, para incorporar uma imagem do público/imagens, é assim que você pode fazer:

Logo

Ou diretamente de um URL:

Logo

Etapa 7: Otimizando o Desempenho

Consultas de banco de dados

Ao lidar com grandes conjuntos de dados (por exemplo, 1.000 registros), use paginação ou fragmentação para gerenciar o uso de memória:

$data = DB::table('users')->paginate(50);

$pdf = PDF::loadView('myPDF', ['data' => $data]);

Tamanho de saída

Para reduzir o tamanho da saída, minimize o uso de imagens pesadas e opte por gráficos vetoriais quando possível. Além disso, use CSS eficiente.

Quebras de página

Garanta que o conteúdo esteja bem estruturado para quebras de página. Use CSS para lidar com quebras de página:

.page-break {
    page-break-after: always;
}

E no seu modelo Blade:

Etapa 8: configuração avançada

Para configurações mais avançadas, consulte a documentação do DomPDF. Você pode personalizar quase tudo, desde as margens até a forma como as fontes são carregadas.

Usando fontes personalizadas

Para usar fontes personalizadas, primeiro adicione-as ao seu projeto e configure o DomPDF para usá-las:

'custom_font_dir' => base_path('resources/fonts/'),
'custom_font_data' => [
    'custom-font' => [
        'R' => 'CustomFont-Regular.ttf',
        'B' => 'CustomFont-Bold.ttf',
    ]
],

No seu modelo Blade:

Conclusão

Seguindo este guia passo a passo, você pode gerar documentos PDF sofisticados usando Laravel e DomPDF, completos com imagens e estilo CSS. Este tutorial abordou opções essenciais de configuração, considerações de design e otimização de desempenho. Você pode expandir essa base para construir um sistema robusto de geração de documentos para sua aplicação Laravel.

Série e repositório potenciais

Este tutorial faz parte de uma série sobre geração de PDF com Laravel. Um repositório completo com diversos modelos de documentos (faturas, recibos, certificados, tickets, etc.) pode ser encontrado aqui. Sinta-se à vontade para contribuir e expandir a coleção.

Boa codificação!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/alphaolomi/generating-pdf-documents-in-laravel-n07?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3