Szybki start z Artisan
W skrócie
Dział zatytułowany „W skrócie”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.
Przegląd koncepcyjny
Dział zatytułowany „Przegląd koncepcyjny”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.
Przykład kodu — szybki start
Dział zatytułowany „Przykład kodu — szybki start”<?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.
Niestandardowy rozmiar strony
Dział zatytułowany „Niestandardowy rozmiar strony”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ć.
Co otrzymujesz
Dział zatytułowany „Co otrzymujesz”| Właściwość | Zachowanie |
|---|---|
| Tekst | Zaznaczalny 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/) |
| Strony | Importowana jest strona 0 z wyniku Chrome |
Przypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”- Pusty HTML nie powoduje wykonania żadnej operacji.
writeHtmlChrome('')zwraca dokument bez zmian (zweryfikowane wHasTextOutput::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 URIdata:. To celowa izolacja sieciowa, a nie błąd. Zobacz /integrations/artisan/security-and-operations/. - Brak mostka. Jeśli
nextpdf/artisannie jest zainstalowany, rdzeń zgłasza wyjątek układu zamiast błędu krytycznego.
Wydajność
Dział zatytułowany „Wydajność”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/.
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”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ń.
Kontekst komercyjny
Dział zatytułowany „Kontekst komercyjny”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.
Zobacz także
Dział zatytułowany „Zobacz także”- /integrations/artisan/install/
- /integrations/artisan/configuration/
- /integrations/artisan/production-usage/
- /integrations/artisan/troubleshooting/
- /integrations/artisan/security-and-operations/