Szybki start — pierwszy plik PDF w CodeIgniter 4
W skrócie
Dział zatytułowany „W skrócie”W kontrolerze pobierz usługę pdf, dodaj treść do jej dokumentu i zwróć odpowiedź z plikiem do pobrania. W efekcie powstaje plik w formacie Portable Document Format (PDF) w trzech wierszach kodu i jednej odpowiedzi Hypertext Transfer Protocol (HTTP).
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/codeigniterWymagania i sposób sprawdzenia, czy pakiet jest wykrywany, opisano na stronie /integrations/codeigniter/install/.
Krok 1 — wygeneruj kontroler
Dział zatytułowany „Krok 1 — wygeneruj kontroler”Utwórz kontroler zwracający plik PDF. Biblioteka Pdf tworzy nowy dokument, a następnie przekształca go w obiekt DownloadResponse CodeIgniter.
W każdym przykładzie PHP na tej stronie instrukcja declare(strict_types=1); znajduje się po znaczniku otwierającym, w osobnym wierszu (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() zwraca nowy obiekt Pdf. Pakietowy zestaw testów funkcjonalnych potwierdza również, że dokument bazowy jest nowy przy każdym wywołaniu. Wywołanie download() tworzy obiekt DownloadResponse z dyspozycją attachment.
Krok 2 — dodaj trasę
Dział zatytułowany „Krok 2 — dodaj trasę”Zmapuj trasę do metody kontrolera w pliku app/Config/Routes.php:
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');Krok 3 — zażądaj pliku PDF
Dział zatytułowany „Krok 3 — zażądaj pliku PDF”Otwórz /invoices/42/pdf. Przeglądarka pobierze plik invoice-42.pdf. Odpowiedź zawiera Content-Type: application/pdf oraz dodawane przez pakiet nagłówki zwiększające bezpieczeństwo odpowiedzi.
Wariant — podgląd inline z użyciem funkcji pomocniczej
Dział zatytułowany „Wariant — podgląd inline z użyciem funkcji pomocniczej”Globalna funkcja pomocnicza pdf() działa tak samo jak Services::pdf(). Wywołaj inline(), aby wyświetlić plik PDF w przeglądarce, zamiast go pobierać:
<?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'); }}Wariant — bezpośredni dokument i PdfResponse
Dział zatytułowany „Wariant — bezpośredni dokument i PdfResponse”Jeśli masz już obiekt Document, możesz zbudować odpowiedź bezpośrednio za pomocą PdfResponse. Funkcja pomocnicza pdf_document() zwraca nowy, wstępnie skonfigurowany 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'); }}Co zostało zbudowane
Dział zatytułowany „Co zostało zbudowane”- Kontroler pobierający usługę NextPDF i zwracający typowany obiekt
DownloadResponse. - Dwa równoważne punkty wejścia: klasa
Servicesoraz funkcje pomocniczepdf()/pdf_document(). - Odpowiedź z
application/pdf, nagłówkami bezpieczeństwa pakietu i oczyszczoną nazwą pliku.
Następne kroki
Dział zatytułowany „Następne kroki”Aby zachować zwięzłość pierwszego wprowadzenia, ten samouczek pomija obsługę błędów. Kontrolery produkcyjne ze wstrzykiwaniem zależności, obsługą wyjątków, obserwowalnością oraz zadaniem kolejki opisano na stronie /integrations/codeigniter/production-usage/. Tam znajdziesz wzmocnione warianty.
Zgodność
Dział zatytułowany „Zgodność”- Znacznik otwierający PHP w osobnym wierszu w przykładach kodu (PSR-12 Extended Coding Style §x1.x3.p11).
- Forma instrukcji declare(strict_types=1) w przykładach kodu (PSR-12 Extended Coding Style §x1.x3.p34).
Zobacz też
Dział zatytułowany „Zobacz też”- /integrations/codeigniter/overview/ — pełny zakres interfejsu programowania aplikacji (API).
- /integrations/codeigniter/configuration/ — zmiana ustawień domyślnych i ścieżek.
- /integrations/codeigniter/production-usage/ — kontrolery gotowe do produkcji oraz zadania asynchroniczne.
- /integrations/codeigniter/troubleshooting/ — gdy trasa nie zwraca pliku PDF.