Schnellstart — Ihr erstes PDF in CodeIgniter 4
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Lösen Sie den pdf-Service in einem Controller auf. Fügen Sie dem Dokument Inhalt hinzu. Geben Sie eine Download-Antwort zurück. Das sind drei Zeilen Arbeit und eine HTTP-Antwort.
Installation
Abschnitt betitelt „Installation“composer require nextpdf/codeigniterDie Voraussetzungen und die Bestätigung der Paketerkennung finden Sie unter /integrations/codeigniter/install/.
Schritt 1 — Einen Controller erzeugen
Abschnitt betitelt „Schritt 1 — Einen Controller erzeugen“Erstellen Sie einen Controller, der ein PDF zurückgibt. Die Pdf-Library kapselt für Sie ein neues Dokument und erzeugt daraus eine CodeIgniter-DownloadResponse.
Jedes PHP-Beispiel auf dieser Seite setzt declare(strict_types=1); in eine eigene Zeile direkt nach dem öffnenden PHP-Tag (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() gibt eine neue Pdf-Instanz zurück. Auch das zugrunde liegende Dokument wird bei jedem Aufruf neu erzeugt — geprüft durch die funktionale Testsuite des Pakets. Der Aufruf von download() erzeugt eine DownloadResponse mit der attachment-Disposition.
Schritt 2 — Eine Route hinzufügen
Abschnitt betitelt „Schritt 2 — Eine Route hinzufügen“Ordnen Sie in app/Config/Routes.php eine Route der Controller-Methode zu:
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');Schritt 3 — Das PDF anfordern
Abschnitt betitelt „Schritt 3 — Das PDF anfordern“Öffnen Sie /invoices/42/pdf. Der Browser lädt invoice-42.pdf herunter. Die Antwort enthält Content-Type: application/pdf sowie die Response-Hardening-Header des Pakets.
Variante — Inline-Vorschau mit dem Helper
Abschnitt betitelt „Variante — Inline-Vorschau mit dem Helper“Der globale pdf()-Helper entspricht Services::pdf(). Um das PDF im Browser anzuzeigen, statt es herunterzuladen, rufen Sie inline() auf:
<?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 — Direktes Dokument und PdfResponse
Abschnitt betitelt „Variante — Direktes Dokument und PdfResponse“Wenn Sie bereits ein Document besitzen, erstellen Sie die Antwort direkt mit PdfResponse. Der pdf_document()-Helper liefert Ihnen ein neues, vorkonfiguriertes Dokument.
<?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'); }}Was du gebaut hast
Abschnitt betitelt „Was du gebaut hast“- Ein Controller, der einen NextPDF-Service auflöst und eine typisierte
DownloadResponsezurückgibt. - Zwei gleichwertige Einstiegspunkte: die
Services-Klasse und die Helperpdf()/pdf_document(). - Eine Antwort, die
application/pdfsowie die Sicherheits-Header des Pakets enthält, mit bereinigtem Dateinamen.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“Damit diese erste Einführung übersichtlich bleibt, lässt das Tutorial die Fehlerbehandlung aus. Für produktionsreife Controller — Dependency Injection, Ausnahmebehandlung, Observability und den Queue-Job — lesen Sie weiter unter /integrations/codeigniter/production-usage/. Diese Seite zeigt Ihnen die gehärteten Varianten.
Konformität
Abschnitt betitelt „Konformität“- Öffnendes PHP-Tag in einer eigenen Zeile in Code-Beispielen (PSR-12 Extended Coding Style §x1.x3.p11).
- Anweisungsform declare(strict_types=1) in Code-Beispielen (PSR-12 Extended Coding Style §x1.x3.p34).
Siehe auch
Abschnitt betitelt „Siehe auch“- /integrations/codeigniter/overview/ — die vollständige API-Oberfläche.
- /integrations/codeigniter/configuration/ — Standardwerte und Pfade ändern.
- /integrations/codeigniter/production-usage/ — produktionsreife Controller und asynchrone Jobs.
- /integrations/codeigniter/troubleshooting/ — wenn eine Route kein PDF zurückgibt.