Démarrage rapide — ton premier PDF avec CodeIgniter 4
Résous le service pdf dans un contrôleur, ajoute du contenu à son document, puis renvoie une réponse de téléchargement. En pratique, trois lignes suffisent pour produire une seule réponse HTTP.
Installation
Section intitulée « Installation »composer require nextpdf/codeigniterPour connaître les prérequis et vérifier la découverte du package, consulte /integrations/codeigniter/install/.
Étape 1 — Génère un contrôleur
Section intitulée « Étape 1 — Génère un contrôleur »Crée un contrôleur qui renvoie un PDF. La bibliothèque Pdf encapsule pour toi un nouveau document, puis transforme ce document en une DownloadResponse CodeIgniter.
Chaque exemple PHP de cette page place declare(strict_types=1); après la balise d’ouverture, sur sa propre ligne (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() renvoie un nouveau Pdf. Son document sous-jacent est également nouveau à chaque appel, comme le vérifie la suite de tests fonctionnels du package. L’appel download() produit une DownloadResponse avec la disposition attachment.
Étape 2 — Ajoute une route
Section intitulée « Étape 2 — Ajoute une route »Associe une route à la méthode du contrôleur dans app/Config/Routes.php :
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');Étape 3 — Demande le PDF
Section intitulée « Étape 3 — Demande le PDF »Ouvre /invoices/42/pdf. Le navigateur télécharge invoice-42.pdf. La réponse porte Content-Type: application/pdf ainsi que les en-têtes de durcissement fournis par le package.
Variante — aperçu intégré avec le helper
Section intitulée « Variante — aperçu intégré avec le helper »Le helper global pdf() équivaut à Services::pdf(). Pour afficher le PDF dans le navigateur au lieu de le télécharger, appelle inline() :
<?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'); }}Variante — document direct et PdfResponse
Section intitulée « Variante — document direct et PdfResponse »Quand tu disposes déjà d’un Document, construis la réponse directement avec PdfResponse. Le helper pdf_document() te fournit un nouveau document préconfiguré.
<?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'); }}Ce que tu as construit
Section intitulée « Ce que tu as construit »- Un contrôleur qui résout un service NextPDF et renvoie une
DownloadResponsetypée. - Deux points d’entrée équivalents : la classe
Serviceset les helperspdf()/pdf_document(). - Une réponse avec
application/pdfet les en-têtes de sécurité du package, ainsi qu’un nom de fichier assaini.
Étapes suivantes
Section intitulée « Étapes suivantes »Pour garder cette première introduction lisible, le tutoriel laisse de côté la gestion des erreurs. Pour des contrôleurs de production — injection de dépendances, gestion des exceptions, observabilité et job en file d’attente — continue vers /integrations/codeigniter/production-usage/. Cette page présente les variantes durcies.
Conformité
Section intitulée « Conformité »- Balise d’ouverture PHP sur sa propre ligne dans les exemples de code (PSR-12 Extended Coding Style §x1.x3.p11).
- Forme de l’instruction declare(strict_types=1) dans les exemples de code (PSR-12 Extended Coding Style §x1.x3.p34).
Voir aussi
Section intitulée « Voir aussi »- /integrations/codeigniter/overview/ — toute la surface de l’API.
- /integrations/codeigniter/configuration/ — ajuste les valeurs par défaut et les chemins.
- /integrations/codeigniter/production-usage/ — des contrôleurs adaptés à la production et des jobs asynchrones.
- /integrations/codeigniter/troubleshooting/ — quand une route ne renvoie aucun PDF.