Início rápido — seu primeiro PDF no CodeIgniter 4
Visão geral
Seção intitulada “Visão geral”Resolva o serviço pdf em um controller, adicione conteúdo ao documento e retorne uma resposta para download. Isso gera um arquivo no formato Portable Document Format (PDF) em três linhas e uma única resposta do protocolo Hypertext Transfer Protocol (HTTP).
Instalação
Seção intitulada “Instalação”composer require nextpdf/codeigniterPara conferir os requisitos e as verificações de descoberta do pacote, consulte /integrations/codeigniter/install/.
Passo 1 — Gere um controller
Seção intitulada “Passo 1 — Gere um controller”Crie um controller que retorne um PDF. A biblioteca Pdf cria um novo documento para você e, em seguida, transforma esse documento em um DownloadResponse do CodeIgniter.
Todos os exemplos de PHP nesta página colocam declare(strict_types=1); depois da tag de abertura, em sua própria linha (PSR-12 §x1.x3.p11; §x1.x3.p34).
<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;use NextPDF\CodeIgniter\Config\Services;
final class InvoiceController extends BaseController{ public function download(int $id): DownloadResponse { $pdf = Services::pdf();
$pdf->document()->addPage(); $pdf->document()->cell(0, 10, "Invoice #{$id}");
return $pdf->download("invoice-{$id}.pdf"); }}Services::pdf() retorna um novo Pdf. A suíte de testes funcionais do pacote também verifica se o documento subjacente é novo a cada chamada. A chamada download() produz um DownloadResponse com a disposição attachment.
Passo 2 — Adicione uma rota
Seção intitulada “Passo 2 — Adicione uma rota”Mapeie uma rota para o método do controller em app/Config/Routes.php:
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');Passo 3 — Solicite o PDF
Seção intitulada “Passo 3 — Solicite o PDF”Abra /invoices/42/pdf. O navegador baixa invoice-42.pdf. A resposta inclui Content-Type: application/pdf e os cabeçalhos de proteção da resposta do pacote.
Variação — visualização inline com o helper
Seção intitulada “Variação — visualização inline com o helper”O helper global pdf() é equivalente a Services::pdf(). Chame inline() para exibir o PDF no navegador em vez de baixá-lo:
<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
final class ReportController extends BaseController{ public function preview(): DownloadResponse { $pdf = pdf();
$pdf->document()->addPage(); $pdf->document()->cell(0, 10, 'Monthly Report');
return $pdf->inline('report.pdf'); }}Variação — documento direto e PdfResponse
Seção intitulada “Variação — documento direto e PdfResponse”Se você já tiver um Document, monte a resposta diretamente com PdfResponse. O helper pdf_document() fornece um documento novo e pré-configurado.
<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;use NextPDF\CodeIgniter\Http\PdfResponse;
final class DocumentController extends BaseController{ public function generate(): DownloadResponse { $document = pdf_document(); $document->addPage(); $document->cell(0, 10, 'Hello World');
return PdfResponse::download($document, 'hello.pdf'); }}O que você criou
Seção intitulada “O que você criou”- Um controller que resolve um serviço NextPDF e retorna um
DownloadResponsetipado. - Dois pontos de entrada equivalentes: a classe
Servicese os helperspdf()/pdf_document(). - Uma resposta com
application/pdf, cabeçalhos de segurança do pacote e um nome de arquivo sanitizado.
Próximos passos
Seção intitulada “Próximos passos”Para manter esta primeira introdução objetiva, este tutorial não aborda tratamento de erros. Para controllers de produção com injeção de dependências, tratamento de exceções, observabilidade e o job de fila, continue em /integrations/codeigniter/production-usage/. Essa página mostra as variantes reforçadas.
Conformidade
Seção intitulada “Conformidade”- Tag de abertura do PHP em sua própria linha nos exemplos de código (PSR-12 Extended Coding Style §x1.x3.p11).
- Forma da instrução declare(strict_types=1) nos exemplos de código (PSR-12 Extended Coding Style §x1.x3.p34).
Veja também
Seção intitulada “Veja também”- /integrations/codeigniter/overview/ — toda a superfície da application programming interface (API).
- /integrations/codeigniter/configuration/ — ajuste padrões e caminhos.
- /integrations/codeigniter/production-usage/ — controllers de nível de produção e jobs assíncronos.
- /integrations/codeigniter/troubleshooting/ — quando uma rota não retorna nenhum PDF.