Mulai cepat Artisan
Sekilas
Bagian berjudul “Sekilas”Pasang ChromeRendererConfig pada dokumen NextPDF, panggil writeHtmlChrome(), lalu simpan berkas Portable Document Format (PDF). Chrome merender Hypertext Markup Language (HTML). Bridge mengimpor hasil rendernya sebagai Form XObject, dan teksnya tetap dapat dipilih.
Gambaran konseptual
Bagian berjudul “Gambaran konseptual”writeHtmlChrome() adalah metode pada Document inti NextPDF. Concern HasTextOutput menyediakannya. Metode ini memvalidasi input dan menyelesaikan resolusi renderer Artisan. Setelah itu, metode ini mengirim HTML ke Chrome, mengurai PDF yang dikembalikan, dan menyematkan halaman 0 sebagai Form XObject pada posisi kursor saat ini. Tanda tangan publiknya adalah writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static — telah diverifikasi terhadap nextpdf/coresrc/Core/Concerns/HasTextOutput.php.
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”<?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');Ini adalah alur kanonis dari README.md paket. Chrome menangani tata letak flex pada Cascading Style Sheets (CSS). Angka-angka tersebut tetap berupa teks yang dapat dipilih dalam keluaran karena halaman disematkan sebagai Form XObject, bukan gambar raster.
Ukuran halaman khusus
Bagian berjudul “Ukuran halaman khusus”Berikan lebar dan tinggi secara eksplisit dalam satuan poin PDF untuk menetapkan ukuran halaman tetap (A4 ditampilkan):
$doc->writeHtmlChrome($html, width: 595.28, height: 841.89);Ketika Anda memberikan kedua nilai tersebut, Chrome mencetak tepat sesuai ukuran kertas itu. Ketika Anda tidak menyertakan tinggi (atau memberikan null), bridge menyesuaikan tinggi dengan konten yang diukur dan menambahkan penyangga keamanan reflow kecil. Lihat /integrations/artisan/production-usage/ untuk memahami alasan penyangga itu ada dan kapan harus menggantinya.
Apa yang Anda peroleh
Bagian berjudul “Apa yang Anda peroleh”| Properti | Perilaku |
|---|---|
| Teks | Dapat dipilih dan dicari (teks vektor, bukan dirasterisasi) |
| Cascading Style Sheets (CSS) | Tata letak Chrome: flexbox, grid, selektor kompleks, fon web melalui nilai data Uniform Resource Identifier (URI) |
| Jaringan | Tidak ada pengambilan subsumber daya; Uniform Resource Locator (URL) jarak jauh tidak dimuat (lihat /integrations/artisan/security-and-operations/) |
| Halaman | Halaman 0 dari keluaran Chrome diimpor |
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- HTML kosong tidak melakukan apa pun.
writeHtmlChrome('')mengembalikan dokumen tanpa perubahan (diverifikasi diHasTextOutput::writeHtmlChrome). - Belum ada halaman. Jika dokumen belum memiliki halaman,
writeHtmlChrome()menambahkan satu halaman sebelum merender. - Aset jarak jauh tidak dimuat.
<img src="https://...">dirender kosong. Sematkan aset secara inline sebagai URIdata:. Ini adalah bagian dari postur isolasi jaringan, bukan bug. Lihat /integrations/artisan/security-and-operations/. - Bridge tidak ada. Jika
nextpdf/artisantidak terpasang, core melempar eksepsi tata letak alih-alih kesalahan fatal.
Kinerja
Bagian berjudul “Kinerja”Panggilan pertama mencakup waktu startup dan tata letak Chrome. Panggilan berikutnya menggunakan kembali proses Chrome yang aktif melalui BrowserPool. Untuk pekerjaan batch atau worker yang berjalan lama, baca panduan siklus hidup dan sumber daya di halaman /integrations/artisan/production-usage/.
Catatan keamanan
Bagian berjudul “Catatan keamanan”Panduan mulai cepat ini menggunakan HTML tepercaya yang ditulis langsung di kode. Sebelum Anda memberikan HTML apa pun yang dipengaruhi pengguna ke writeHtmlChrome(), baca /integrations/artisan/security-and-operations/. Bridge mengisolasi akses jaringan, tetapi proses rendering HTML tetap memiliki permukaan serangan.
Konteks komersial
Bagian berjudul “Konteks komersial”Ini menghasilkan PDF dari HTML menggunakan bridge sumber terbuka. Untuk menyematkan berkas Extensible Markup Language (XML) e-faktur yang patuh ke dalam dokumen yang sama, tingkat Premium Pro menyediakan embedder. Jalur sumber terbuka tidak terpengaruh ketika Premium tidak tersedia.
Lihat juga
Bagian berjudul “Lihat juga”- /integrations/artisan/install/
- /integrations/artisan/configuration/
- /integrations/artisan/production-usage/
- /integrations/artisan/troubleshooting/
- /integrations/artisan/security-and-operations/