Snelstart — je eerste PDF in CodeIgniter 4
In één oogopslag
Sectie met titel “In één oogopslag”Resolve de pdf-service in een controller, voeg inhoud toe aan het document en retourneer een downloadrespons. Zo krijg je in drie regels en één Hypertext Transfer Protocol (HTTP)-respons een Portable Document Format (PDF)-bestand.
Installeren
Sectie met titel “Installeren”composer require nextpdf/codeigniterZie /integrations/codeigniter/install/ voor de vereisten en controles op pakketdetectie.
Stap 1 — Genereer een controller
Sectie met titel “Stap 1 — Genereer een controller”Maak een controller die een PDF retourneert. De Pdf-bibliotheek maakt een nieuw document voor je en zet dat vervolgens om in een CodeIgniter-DownloadResponse.
In elk PHP-voorbeeld op deze pagina staat declare(strict_types=1); na de openingstag, op een eigen regel (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() retourneert een nieuwe Pdf. De functionele testsuite van het pakket controleert daarnaast dat het onderliggende document bij elke aanroep nieuw is. Een aanroep van download() levert een DownloadResponse op met de attachment-dispositie.
Stap 2 — Voeg een route toe
Sectie met titel “Stap 2 — Voeg een route toe”Koppel een route aan de controllermethode in app/Config/Routes.php:
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');Stap 3 — Vraag de PDF op
Sectie met titel “Stap 3 — Vraag de PDF op”Open /invoices/42/pdf. Je browser downloadt invoice-42.pdf. De respons bevat Content-Type: application/pdf en de hardeningheaders van het pakket.
Variant — inline-voorvertoning met de helper
Sectie met titel “Variant — inline-voorvertoning met de helper”De globale pdf()-helper is gelijkwaardig aan Services::pdf(). Roep inline() aan om de PDF in de browser te tonen in plaats van die te downloaden:
<?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'); }}Variant — rechtstreeks document en PdfResponse
Sectie met titel “Variant — rechtstreeks document en PdfResponse”Als je al een Document hebt, bouw je de respons rechtstreeks met PdfResponse. De pdf_document()-helper geeft je een nieuw, vooraf geconfigureerd document.
<?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'); }}Wat je hebt gebouwd
Sectie met titel “Wat je hebt gebouwd”- Een controller die een NextPDF-service resolvet en een getypeerde
DownloadResponseretourneert. - Twee gelijkwaardige toegangspunten: de
Services-klasse en depdf()/pdf_document()-helpers. - Een respons met
application/pdf, de beveiligingsheaders van het pakket en een opgeschoonde bestandsnaam.
Volgende stappen
Sectie met titel “Volgende stappen”Om deze eerste introductie gericht te houden, laat deze tutorial foutafhandeling buiten beschouwing. Voor productiecontrollers met dependency injection, exception-afhandeling, observability en de queue-job ga je verder naar /integrations/codeigniter/production-usage/. Die pagina toont je de geharde varianten.
Conformiteit
Sectie met titel “Conformiteit”- PHP-openingstag op een eigen regel in codevoorbeelden (PSR-12 Extended Coding Style §x1.x3.p11).
- declare(strict_types=1)-statementvorm in codevoorbeelden (PSR-12 Extended Coding Style §x1.x3.p34).
Zie ook
Sectie met titel “Zie ook”- /integrations/codeigniter/overview/ — het volledige application programming interface (API)-oppervlak.
- /integrations/codeigniter/configuration/ — wijzig de standaardwaarden en paden.
- /integrations/codeigniter/production-usage/ — productiewaardige controllers en asynchrone jobs.
- /integrations/codeigniter/troubleshooting/ — wanneer een route geen PDF retourneert.