Ga naar inhoud

Uw eerste PDF

In deze tutorial maakt u twee PDF-bestanden. Eerst schrijft u tekst rechtstreeks met de fluent Application Programming Interface (API) van core. Vervolgens rendert u een Hypertext Markup Language (HTML)-fragment met Cascading Style Sheets (CSS) naar een pagina. Aan het eind hebt u een werkend script dat u kunt aanpassen voor een echt document, plus koppelingen naar de framework- en servervarianten.

Beide benaderingen gebruiken dezelfde engine, dus wat u hier leert, geldt voor elke distributie.

Het diagram hieronder toont de twee manieren om een document op te stellen en de drie implementatieomgevingen die deze hergebruiken.

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

U hebt een geïnstalleerde core-engine nodig en een plek waar u een PHP-script kunt uitvoeren.

  1. Controleer dat PHP 8.4 de actieve runtime is:

    Terminal window
    php --version
  2. Installeer de core-engine in uw project, als die nog niet aanwezig is:

    Terminal window
    composer require nextpdf/core
  3. Maak in de hoofdmap van het project een werkbestand met de naam first-pdf.php.

Begin met de fluent API. Document::createStandalone() retourneert een document dat u meteen kunt gebruiken. Voeg een pagina toe, stel een lettertype in, schrijf cellen en sla vervolgens op. Elke methode waarmee u het document opbouwt, retourneert het document, zodat de aanroepen van boven naar beneden leesbaar blijven.

  1. Plaats deze code in first-pdf.php. Het script declareert strict types, laadt de autoloader en bouwt één pagina op:

    <?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. Voer het script uit:

    Terminal window
    php first-pdf.php
  3. Controleer de uitvoer. Als het goed is, ziet u deze regel in de standaarduitvoer en staat er naast het script een nieuw bestand met de naam first-pdf.pdf:

    Wrote first-pdf.pdf

U hebt nu een geldig PDF 2.0-bestand gegenereerd. Open het in een viewer naar keuze om de kop en de regel eronder te zien.

Cellen schrijven geeft u nauwkeurige controle. De meeste documenten zijn echter sneller te beschrijven in HTML en CSS. De core-engine bevat een HTML-pijplijn die volledig in PHP is geschreven. De methode writeHtml() rendert een fragment naar de huidige pagina. Daarbij gebruikt de engine geen browser of externe service.

  1. Maak een tweede bestand, html-pdf.php, dat een 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. Voer het uit:

    Terminal window
    php html-pdf.php
  3. Bevestig de uitvoerregel en het nieuwe bestand:

    Wrote html-pdf.pdf

De engine rendert een ondersteunde subset van HTML en CSS. Raadpleeg de CSS-ondersteuningsmatrix voordat u op een eigenschap vertrouwt. Wanneer een lay-out volledige browsergetrouwheid vereist, zoals flexbox, grid of webfonts, installeert u de Artisan-renderer en roept u in plaats daarvan writeHtmlChrome() aan. Die methode houdt tekst selecteerbaar.

Mogelijk draait uw applicatie al in een framework of via de server. Dezelfde twee aanroepen passen ook in die omgeving. De engine blijft hetzelfde; alleen de integratiecode verandert.

De Pdf-facade levert voor elke aanroep een nieuw document op. PdfResponse maakt van een document een downloadrespons:

<?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');
}
}

Zie de Laravel-quickstart.

U hebt nu op drie manieren een PDF gegenereerd. Gebruik deze pagina’s om op elk daarvan verder te bouwen.