Zum Inhalt springen

Ihr erstes PDF

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.

From your code to a PDF fileTwo authoring approaches feed one engine, which produces a PDF that you can save, stream, or return from a framework or server.

Authoring

Fluent API

setFont() + cell()

HTML fragment

writeHtml()

Document

Core engine

(pure PHP)

PDF 2.0 bytes

save() to disk

output() / getPdfData()

stream or in memory

Framework response

or server REST reply

From your code to a PDF file

Sie benötigen zwei Dinge: die installierte Core-Engine und einen Ort, an dem Sie ein PHP-Skript ausführen können.

  1. Stellen Sie sicher, dass PHP 8.4 die aktive Laufzeitumgebung ist:

    Terminal-Fenster
    php --version
  2. Installieren Sie die Core-Engine in Ihrem Projekt, falls sie noch nicht vorhanden ist:

    Terminal-Fenster
    composer require nextpdf/core
  3. Legen Sie im Projektwurzelverzeichnis eine Arbeitsdatei mit dem Namen first-pdf.php an.

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.

  1. Fügen Sie diesen Code in first-pdf.php ein. Das Skript deklariert strikte Typen, lädt den Autoloader und baut ein einseitiges Dokument auf:

    <?php
    declare(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";
  2. Führen Sie das Skript aus:

    Terminal-Fenster
    php first-pdf.php
  3. 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.

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.

  1. Erstellen Sie eine zweite Datei, html-pdf.php, die ein HTML-Fragment rendert:

    <?php
    declare(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";
  2. Führen Sie die Datei aus:

    Terminal-Fenster
    php html-pdf.php
  3. 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.

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.

Sie haben jetzt auf drei Wegen ein PDF erzeugt. So geht es von jedem dieser Wege aus weiter.