Twój pierwszy plik PDF
W skrócie
Dział zatytułowany „W skrócie”W tym samouczku wygenerujesz dwa pliki PDF. Najpierw zapiszesz tekst bezpośrednio za pomocą fluent API rdzenia. Następnie wyrenderujesz na stronie fragment HTML z CSS. Na koniec będziesz mieć działający skrypt, który można dostosować do rzeczywistego dokumentu, oraz odnośniki do wariantów dla frameworków i serwera.
Oba podejścia działają na tym samym silniku, więc to, czego nauczysz się tutaj, przyda się w każdej dystrybucji.
Poniższy diagram pokazuje dwa podejścia do tworzenia treści oraz trzy środowiska wdrożeniowe, które z nich korzystają.
Zanim zaczniesz
Dział zatytułowany „Zanim zaczniesz”Potrzebujesz zainstalowanego silnika rdzeniowego oraz środowiska, w którym uruchomisz skrypt PHP.
-
Sprawdź, czy PHP 8.4 jest aktywnym środowiskiem uruchomieniowym:
Okno terminala php --version -
Zainstaluj silnik rdzeniowy w projekcie, jeśli nie jest jeszcze obecny:
Okno terminala composer require nextpdf/core -
Utwórz w katalogu głównym projektu plik roboczy o nazwie
first-pdf.php.
Generowanie pliku PDF z PHP
Dział zatytułowany „Generowanie pliku PDF z PHP”Zacznij od fluent API. Document::createStandalone() zwraca dokument gotowy do użycia. Dodaj stronę, ustaw czcionkę, wstaw komórki, a następnie zapisz dokument. Każda metoda dodająca treść zwraca dokument, dzięki czemu wywołania czyta się od góry do dołu.
-
Umieść ten kod w
first-pdf.php. Skrypt deklaruje ścisłe typy, ładuje autoloader i tworzy jedną stronę:<?phpdeclare(strict_types=1);require_once __DIR__ . '/vendor/autoload.php';use NextPDF\Core\Document;$document = Document::createStandalone();$document->setTitle('My first NextPDF document');$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->setFont('helvetica', '', 12);$document->cell(0, 10, 'This is the first PDF I generated with PHP.', newLine: true);$document->save(__DIR__ . '/first-pdf.pdf');echo "Wrote first-pdf.pdf\n"; -
Uruchom skrypt:
Okno terminala php first-pdf.php -
Sprawdź wynik. Na standardowym wyjściu powinien pojawić się ten wiersz oraz nowy plik o nazwie
first-pdf.pdfobok skryptu:Wrote first-pdf.pdf
Masz teraz prawidłowy plik PDF 2.0. Otwórz go w dowolnej przeglądarce, aby zobaczyć nagłówek i wiersz pod nim.
Renderowanie HTML do PDF
Dział zatytułowany „Renderowanie HTML do PDF”Komórki dają precyzyjną kontrolę, ale większość dokumentów szybciej opisuje się w HTML i CSS. Silnik rdzeniowy zawiera potok HTML napisany w czystym PHP. Metoda writeHtml() renderuje fragment na bieżącej stronie. Nie korzysta z przeglądarki ani z zewnętrznej usługi.
-
Utwórz drugi plik,
html-pdf.php, renderujący fragment HTML:<?phpdeclare(strict_types=1);require_once __DIR__ . '/vendor/autoload.php';use NextPDF\Core\Document;$document = Document::createStandalone();$document->setTitle('HTML to PDF');$document->addPage();$html = <<<'HTML'<h1 style="color: #1E3A8A;">HTML rendering in NextPDF</h1><p>NextPDF renders <strong>HTML content</strong> directly into PDF pages.</p><ul><li>Headings, paragraphs, and lists</li><li>Inline <strong>bold</strong> and <em>italic</em></li><li>Inline styles such as color and font-size</li></ul>HTML;$document->writeHtml($html);$document->save(__DIR__ . '/html-pdf.pdf');echo "Wrote html-pdf.pdf\n"; -
Uruchom go:
Okno terminala php html-pdf.php -
Potwierdź wiersz wyjściowy oraz nowy plik:
Wrote html-pdf.pdf
Silnik renderuje obsługiwany podzbiór HTML i CSS. Zanim oprzesz układ na konkretnej właściwości, sprawdź macierz obsługi CSS. Gdy układ wymaga pełnej zgodności z renderowaniem przeglądarki, na przykład flexbox, grid lub czcionek internetowych, zainstaluj renderer Artisan i zamiast tego wywołaj writeHtmlChrome(). Ta metoda zachowuje możliwość zaznaczania tekstu.
Z poziomu kontrolera frameworka
Dział zatytułowany „Z poziomu kontrolera frameworka”Aplikacja może już działać w frameworku albo za pośrednictwem serwera. Te same dwa wywołania można przenieść do tego środowiska. Silnik pozostaje ten sam. Zmienia się jedynie sposób podłączenia.
Fasada Pdf dla każdego wywołania rozwiązuje nowy dokument. PdfResponse zamienia dokument w odpowiedź do pobrania:
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use Illuminate\Http\Response;use NextPDF\Contracts\PdfDocumentInterface;use NextPDF\Laravel\Http\PdfResponse;
final class ReportController extends Controller{ public function download(): Response { $document = app(PdfDocumentInterface::class); $document->addPage(); $document->cell(0, 10, 'Monthly report', newLine: true);
return PdfResponse::download($document, 'report.pdf'); }}Zobacz szybki start z Laravelem.
Bundle udostępnia usługę PdfFactory. Dodaj podpowiedź typu NextPDF\Symfony\Service\PdfFactory w kontrolerze, zbuduj dokument w ten sam sposób i zwróć go jako odpowiedź HTTP. Zobacz szybki start z Symfony.
Gdy serwer NextPDF jest uruchomiony, wyślij uporządkowaną tablicę operacji metodą POST, a serwer zwróci bajty PDF:
curl -sS -X POST http://localhost:8080/api/v1/render \ -H 'Authorization: Bearer <api-key>' \ -H 'Content-Type: application/json' \ -d '{ "page_size": "A4", "orientation": "portrait", "operations": [ { "type": "add_text", "text": "Hello from NextPDF Connect" } ] }' \ --output hello.pdfW przypadku odpowiedzi 200 treścią odpowiedzi jest plik PDF. Zobacz szybki start z Connect.
Następne kroki
Dział zatytułowany „Następne kroki”Masz teraz plik PDF wygenerowany na trzy sposoby. Skorzystaj z tych stron, aby rozwinąć każdy z nich.