Ihr erstes PDF
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“In diesem Tutorial erzeugen Sie zwei PDF-Dateien. Für die erste Datei schreiben Sie Text direkt mit der fluenten Core-API (Application Programming Interface). Für die zweite rendern Sie ein Fragment aus HyperText Markup Language (HTML) und Cascading Style Sheets (CSS) in eine Seite. Am Ende haben Sie ein funktionierendes Skript, das Sie für ein echtes Dokument anpassen können. Außerdem wissen Sie, wo die Framework-Varianten und die Server-Variante zu finden sind.
Beide Ansätze laufen auf derselben Engine. Was du hier lernst, überträgt sich also auf jede Distribution.
Das Diagramm unten zeigt die zwei Authoring-Ansätze und die drei Deployment-Oberflächen, die sie wiederverwenden.
Bevor Sie beginnen
Abschnitt betitelt „Bevor Sie beginnen“Sie benötigen zwei Dinge: die installierte Core-Engine und einen Ort, an dem Sie ein PHP-Skript ausführen können.
-
Stellen Sie sicher, dass PHP 8.4 die aktive Laufzeitumgebung ist:
Terminal-Fenster php --version -
Installieren Sie die Core-Engine in Ihrem Projekt, falls sie noch nicht vorhanden ist:
Terminal-Fenster composer require nextpdf/core -
Legen Sie im Projektwurzelverzeichnis eine Arbeitsdatei mit dem Namen
first-pdf.phpan.
Ein PDF aus PHP erzeugen
Abschnitt betitelt „Ein PDF aus PHP erzeugen“Beginnen Sie mit der fluenten API. Document::createStandalone() liefert ein einsatzbereites Dokument zurück. Sie fügen eine Seite hinzu, setzen eine Schrift, schreiben Zellen und speichern anschließend. Jede Authoring-Methode gibt das Dokument zurück, sodass sich die Aufrufe von oben nach unten lesen.
-
Fügen Sie diesen Code in
first-pdf.phpein. Das Skript deklariert strikte Typen, lädt den Autoloader und baut ein einseitiges Dokument auf:<?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"; -
Führen Sie das Skript aus:
Terminal-Fenster php first-pdf.php -
Prüfen Sie die Ausgabe. Sie sollten diese Zeile auf der Standardausgabe sehen und neben dem Skript eine neue Datei mit dem Namen
first-pdf.pdf:Wrote first-pdf.pdf
Sie haben jetzt eine gültige PDF 2.0-Datei erzeugt. Öffnen Sie sie in einem beliebigen PDF-Viewer, und Sie sehen die Überschrift mit der darunterliegenden Zeile.
HTML in PDF rendern
Abschnitt betitelt „HTML in PDF rendern“Das Schreiben von Zellen gibt Ihnen präzise Kontrolle. Die meisten Dokumente lassen sich jedoch schneller als HTML und CSS beschreiben. Die Core-Engine enthält eine reine PHP-HTML-Pipeline. Die Methode writeHtml() rendert ein Fragment in die aktuelle Seite. Sie verwendet keinen Browser und keinen externen Dienst.
-
Erstellen Sie eine zweite Datei,
html-pdf.php, die ein HTML-Fragment rendert:<?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"; -
Führen Sie die Datei aus:
Terminal-Fenster php html-pdf.php -
Prüfen Sie die Ausgabezeile und die neue Datei:
Wrote html-pdf.pdf
Die Engine rendert eine unterstützte Teilmenge von HTML und CSS. Bevor Sie sich auf eine Eigenschaft verlassen, prüfen Sie sie anhand der CSS-Support-Matrix. Wenn ein Layout vollständige Browser-Treue erfordert — zum Beispiel Flexbox, Grid oder Web-Schriften — installieren Sie den Artisan-Renderer und rufen stattdessen writeHtmlChrome() auf. Diese Methode hält den Text auswählbar.
Aus einem Framework-Controller
Abschnitt betitelt „Aus einem Framework-Controller“Ihre Anwendung läuft möglicherweise bereits auf einem Framework oder als Server. Dieselben zwei Aufrufe lassen sich in diese Umgebung übertragen. Die Engine bleibt identisch, nur die Verdrahtung ändert sich.
Die Pdf-Fassade löst bei jedem Aufruf ein frisches Dokument auf. PdfResponse wandelt ein Dokument in eine Download-Antwort um:
<?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'); }}Siehe den Laravel-Schnellstart.
Das Bundle stellt einen PdfFactory-Dienst bereit. Verwenden Sie NextPDF\Symfony\Service\PdfFactory als Type Hint in einem Controller, bauen Sie ein Dokument auf dieselbe Weise auf und geben Sie es dann als HTTP-Antwort zurück. Siehe den Symfony-Schnellstart.
Wenn NextPDF Server läuft, senden Sie ein geordnetes Operations-Array per POST, und der Server liefert die PDF-Bytes zurück:
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.pdfBei einer 200-Antwort enthält der Body das PDF. Siehe den Connect-Schnellstart.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“Sie haben jetzt auf drei Wegen ein PDF erzeugt. So geht es von jedem dieser Wege aus weiter.