Przejdź do głównej zawartości

Szybki start z Artisan

Skonfiguruj dokument NextPDF za pomocą ChromeRendererConfig, wywołaj writeHtmlChrome() i zapisz plik Portable Document Format (PDF). Chrome renderuje Hypertext Markup Language (HTML). Mostek importuje wynik jako Form XObject, a tekst pozostaje zaznaczalny.

writeHtmlChrome() to metoda rdzeniowego Document systemu NextPDF. Udostępnia ją cecha HasTextOutput. Metoda waliduje dane wejściowe i rozwiązuje mechanizm renderujący Artisan. Następnie wysyła HTML do Chrome, parsuje zwrócony PDF i osadza stronę 0 jako Form XObject w bieżącej pozycji kursora. Publiczna sygnatura to writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static — zweryfikowana na podstawie nextpdf/coresrc/Core/Concerns/HasTextOutput.php.

quickstart.php
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(
chromeBinaryPath: '/usr/bin/chromium',
);
$doc = Document::createStandalone();
$doc->setChromeRendererConfig($config);
$doc->addPage();
$doc->writeHtmlChrome('
<div style="display: flex; gap: 20px; font-family: sans-serif;">
<div style="flex: 1; background: #f0f0f0; padding: 24px;">
<h2>Revenue</h2><p style="font-size: 2em; color: #2563eb;">$124,500</p>
</div>
<div style="flex: 1; background: #f0f0f0; padding: 24px;">
<h2>Orders</h2><p style="font-size: 2em; color: #16a34a;">1,847</p>
</div>
</div>
');
$doc->save('/tmp/report.pdf');

To kanoniczny przepływ z pliku README.md pakietu. Chrome obsługuje układ flex w Cascading Style Sheets (CSS). W wyniku liczby pozostają zaznaczalnym tekstem, ponieważ strona jest osadzona jako Form XObject, a nie jako obraz rastrowy.

Przekaż jawnie szerokość i wysokość w punktach PDF, aby dopasować renderowanie do stałego rozmiaru strony (pokazano A4):

$doc->writeHtmlChrome($html, width: 595.28, height: 841.89);

Gdy podasz obie wartości, Chrome drukuje dokładnie na takim rozmiarze papieru. Gdy pominiesz wysokość (lub przekażesz null), mostek dopasowuje ją do zmierzonej wysokości treści i dodaje niewielki bufor bezpieczeństwa na ponowny przepływ. Zobacz /integrations/artisan/production-usage/, aby dowiedzieć się, po co istnieje ten bufor i kiedy go nadpisać.

WłaściwośćZachowanie
TekstZaznaczalny i przeszukiwalny (tekst wektorowy, nierasteryzowany)
Cascading Style Sheets (CSS)Układ Chrome: flexbox, grid, złożone selektory, czcionki internetowe za pomocą wartości Uniform Resource Identifier (URI) typu data
SiećBrak pobierania zasobów podrzędnych; zdalne Uniform Resource Locators (URL) nie są ładowane (zobacz /integrations/artisan/security-and-operations/)
StronyImportowana jest strona 0 z wyniku Chrome
  • Pusty HTML nie powoduje wykonania żadnej operacji. writeHtmlChrome('') zwraca dokument bez zmian (zweryfikowane w HasTextOutput::writeHtmlChrome).
  • Brak strony. Jeśli dokument nie zawiera strony, writeHtmlChrome() dodaje ją przed renderowaniem.
  • Zdalne zasoby nie są ładowane. <img src="https://..."> renderuje się jako pusty element. Umieszczaj zasoby w treści jako URI data:. To celowa izolacja sieciowa, a nie błąd. Zobacz /integrations/artisan/security-and-operations/.
  • Brak mostka. Jeśli nextpdf/artisan nie jest zainstalowany, rdzeń zgłasza wyjątek układu zamiast błędu krytycznego.

Pierwsze wywołanie obejmuje czas uruchomienia Chrome oraz obliczania układu. Kolejne wywołania ponownie wykorzystują działający proces Chrome za pośrednictwem BrowserPool. W przypadku zadań wsadowych lub długo działających procesów roboczych zapoznaj się ze wskazówkami dotyczącymi cyklu życia i zasobów na stronie /integrations/artisan/production-usage/.

W szybkim starcie używany jest zaufany HTML zapisany na stałe w kodzie. Zanim przekażesz do writeHtmlChrome() jakikolwiek HTML zależny od użytkownika, przeczytaj /integrations/artisan/security-and-operations/. Mostek izoluje dostęp do sieci, ale renderowanie HTML nadal ma powierzchnię zagrożeń.

Ten przepływ tworzy PDF z HTML za pomocą mostka o otwartym kodzie źródłowym. Aby osadzić w tym samym dokumencie zgodny plik e-faktury Extensible Markup Language (XML), poziom Premium Pro dostarcza mechanizm osadzania. Ścieżka open source pozostaje nienaruszona, gdy Premium nie jest obecny.

  • /integrations/artisan/install/
  • /integrations/artisan/configuration/
  • /integrations/artisan/production-usage/
  • /integrations/artisan/troubleshooting/
  • /integrations/artisan/security-and-operations/