Przejdź do głównej zawartości

Twój pierwszy plik PDF

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ą.

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

Potrzebujesz zainstalowanego silnika rdzeniowego oraz środowiska, w którym uruchomisz skrypt PHP.

  1. Sprawdź, czy PHP 8.4 jest aktywnym środowiskiem uruchomieniowym:

    Okno terminala
    php --version
  2. Zainstaluj silnik rdzeniowy w projekcie, jeśli nie jest jeszcze obecny:

    Okno terminala
    composer require nextpdf/core
  3. Utwórz w katalogu głównym projektu plik roboczy o nazwie first-pdf.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.

  1. Umieść ten kod w first-pdf.php. Skrypt deklaruje ścisłe typy, ładuje autoloader i tworzy jedną stronę:

    <?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. Uruchom skrypt:

    Okno terminala
    php first-pdf.php
  3. Sprawdź wynik. Na standardowym wyjściu powinien pojawić się ten wiersz oraz nowy plik o nazwie first-pdf.pdf obok 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.

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.

  1. Utwórz drugi plik, html-pdf.php, renderujący fragment HTML:

    <?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. Uruchom go:

    Okno terminala
    php html-pdf.php
  3. 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.

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.

Masz teraz plik PDF wygenerowany na trzy sposoby. Skorzystaj z tych stron, aby rozwinąć każdy z nich.