Zum Inhalt springen

Schnellstart — Ihr erstes PDF in CodeIgniter 4

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.

Terminal-Fenster
composer require nextpdf/codeigniter

Die Voraussetzungen und die Bestätigung der Paketerkennung finden Sie unter /integrations/codeigniter/install/.

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.

Ordnen Sie in app/Config/Routes.php eine Route der Controller-Methode zu:

$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');

Ö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.

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

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');
}
}
  • Ein Controller, der einen NextPDF-Service auflöst und eine typisierte DownloadResponse zurückgibt.
  • Zwei gleichwertige Einstiegspunkte: die Services-Klasse und die Helper pdf() / pdf_document().
  • Eine Antwort, die application/pdf sowie die Sicherheits-Header des Pakets enthält, mit bereinigtem Dateinamen.

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.

  • Ö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).
  • /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.