Referensi API Artisan
Sekilas
Bagian berjudul “Sekilas”Paket Artisan (nextpdf/artisan) memaparkan dua grup API yang saling terkait. Permukaan renderer Chrome — ChromeRendererConfig, ChromeHtmlRenderer, ChromeSecurityPolicy, ChromeRenderResult, ViewportCalculator, dan BrowserPool — mengubah fragmen Hypertext Markup Language (HTML) menjadi berkas Portable Document Format (PDF) yang dihasilkan Chrome. Permukaan parser dan importer — PdfReader, PageImporter, ImportedFormXObject, serta kelas tokenizer dan referensi silang pendukung — menanamkan kembali hasil render tersebut ke dalam dokumen NextPDF sebagai Form XObject yang teksnya dapat dipilih.
Mulai di sini: jika Anda hanya perlu PDF dari HTML, Anda jarang perlu menggunakan paket ini secara langsung. Pasang ChromeRendererConfig ke NextPDF Document, lalu panggil writeHtmlChrome(); lihat panduan ringkas. Gunakan kelas-kelas di bawah ini saat Anda menanamkan renderer di dalam worker atau menjalankan diagnostik parser. Contoh pertama pada bagian Tugas umum menunjukkan jalur satu panggilan.
Tugas umum
Bagian berjudul “Tugas umum”Tiga alur di bawah ini mencakup hampir semua penggunaan produksi, mulai dari panggilan tingkat tertinggi hingga pipeline render-dan-impor yang eksplisit. Setiap contoh diverifikasi terhadap nextpdf-Artisan/src (serta README.md / ci/tests/ paket).
Render fragmen HTML menjadi PDF yang teksnya dapat dipilih dengan panggilan kanonis.
<?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"><h2>Revenue</h2><p>$124,500</p></div>');$doc->save('/tmp/report.pdf');Apa yang dilakukannya: Chrome menata fragmen tersebut. Jembatan ini menanamkan halaman 0 sebagai Form XObject, sehingga teksnya tetap dapat dipilih. writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static menyesuaikan tinggi secara otomatis saat $height bernilai null.
Jalankan renderer dan impor halaman secara manual saat Anda memerlukan pipeline eksplisit di balik writeHtmlChrome(), misalnya di dalam worker atau alur penempatan khusus.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;use NextPDF\Artisan\ChromeRendererConfig;use NextPDF\Artisan\ImportedFormXObject;use NextPDF\Artisan\PageImporter;use NextPDF\Parser\PdfReader;
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig(renderTimeout: 30));
try { $result = $renderer->render($html, widthPt: 595.28);
$reader = new PdfReader($result->getPdfData()); $reader->parse();
$form = (new PageImporter())->import($reader);} finally { $renderer->close();}Apa yang dilakukannya: merender byte PDF Chrome, mengurainya, dan mengimpor halaman 0 ke dalam ImportedFormXObject yang dapat Anda tempatkan. Selalu panggil close() pada renderer untuk melepas proses Chrome.
Buat konfigurasi dari larik bergaya framework untuk config/*.php atau parameter bundle, bukan dari argumen konstruktor yang dikodekan keras.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
$config = ChromeRendererConfig::fromArray([ 'chrome_binary' => '/usr/bin/chromium', 'render_timeout' => 45, 'max_html_size' => 2_000_000, 'no_sandbox' => false,]);Apa yang dilakukannya: memetakan larik konfigurasi snake-case ke konstruktor. Kunci yang tidak disetel memakai nilai standar, dan chrome_binary hanya diterapkan ketika nilainya berupa string yang tidak kosong.
Renderer Chrome
Bagian berjudul “Renderer Chrome”Tipe-tipe ini menjalankan jalur render. Buat ChromeRendererConfig, teruskan ke ChromeHtmlRenderer, lalu panggil render() untuk memperoleh ChromeRenderResult.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
new ChromeRendererConfig(?string $chromeBinaryPath = null, int $renderTimeout = 30, string $defaultCss = '', int $maxHtmlSize = 5000000, bool $noSandbox = false) | Jalur biner, batas waktu, Cascading Style Sheets (CSS), batas ukuran HTML, flag sandbox. | Mendeteksi Chrome secara otomatis ketika jalur biner bernilai null; sandbox tetap aktif kecuali dinonaktifkan. | ChromeRendererConfig | Tidak ada yang diharapkan. | Setel noSandbox hanya ketika runtime memerlukannya. |
ChromeRendererConfig::fromArray(array $config) | chrome_binary, render_timeout, default_css, max_html_size, no_sandbox. | Nilai yang hilang memakai nilai standar konstruktor. | ChromeRendererConfig | Ketidakcocokan tipe akan kembali ke nilai standar untuk kunci opsional. | Cocok untuk larik konfigurasi bergaya framework. |
new ChromeHtmlRenderer(ChromeRendererConfig $config, ?LoggerInterface $logger = null, ?HtmlSecurityPolicyInterface $htmlSecurityPolicy = null) | Konfigurasi, logger opsional, kebijakan HTML pada lapisan parse opsional. | Memakai DefaultHtmlSecurityPolicy ketika tidak ada kebijakan yang diberikan. | ChromeHtmlRenderer | Galat penyiapan Chrome muncul pada render pertama. | Renderer memiliki satu browser pool hingga close(). |
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0) | html: fragmen masukan; widthPt: lebar kertas; heightPt: tinggi target atau otomatis. | Menghitung tinggi konten secara otomatis ketika heightPt <= 0. | ChromeRenderResult | ChromeRenderException; kegagalan validasi ukuran HTML. | Memblokir permintaan jaringan subresource melalui Chrome DevTools Protocol (CDP). |
ChromeHtmlRenderer::getHtmlSecurityPolicy() | tidak ada. | Mengembalikan kebijakan pada lapisan parse yang dikonfigurasi. | HtmlSecurityPolicyInterface | Tidak ada yang diharapkan. | Melengkapi kontrol tingkat transport Chrome. |
ChromeHtmlRenderer::close() | tidak ada. | Menutup browser pool dan mengosongkannya. | void | Galat penonaktifan browser dapat muncul dari pustaka yang mendasarinya. | Panggil saat worker dinonaktifkan. |
Kebijakan keamanan HTML
Bagian berjudul “Kebijakan keamanan HTML”Gunakan API ini saat Anda memvalidasi dan membungkus HTML eksternal sebelum proses render, alih-alih memanggil ChromeHtmlRenderer::render() secara langsung yang sudah memanggilnya.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
ChromeSecurityPolicy::validate(string $html, int $maxSize) | Masukan HTML dan ukuran byte maksimum. | Hanya menerima masukan jika ukurannya valid dan tidak mengandung konstruksi yang dilarang. | void | ChromeRenderException atau eksepsi validasi. | Jalankan sebelum proses render browser saat menerima HTML eksternal. |
ChromeSecurityPolicy::wrapHtml(string $html, int $viewportWidth, string $defaultCss = '') | Fragmen HTML, lebar viewport, CSS standar opsional. | Menghasilkan dokumen render lengkap yang membungkus fragmen. | string | Galat validasi atau konstruksi string. | Memisahkan CSS khusus renderer dari HTML aplikasi. |
Pembantu hasil dan konversi
Bagian berjudul “Pembantu hasil dan konversi”Gunakan pembantu ini untuk membaca hasil render (ChromeRenderResult) dan mengonversi antara poin PDF dan piksel CSS Chrome saat menentukan ukuran viewport atau menghitung tinggi.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
new ChromeRenderResult(string $pdfData, float $widthPt, float $heightPt, float $contentHeightCssPx) | Byte PDF mentah, lebar, tinggi, tinggi konten terukur. | Tidak ada validasi selain properti konstruktor yang bertipe. | ChromeRenderResult | Tidak ada yang diharapkan. | Biasanya dikembalikan oleh ChromeHtmlRenderer::render(). |
ChromeRenderResult::getPdfData() | tidak ada. | Mengembalikan byte PDF mentah yang dihasilkan Chrome. | string | Tidak ada yang diharapkan. | Gunakan dengan PdfReader dan PageImporter saat menanamkan. |
ChromeRenderResult::getWidthPt() | tidak ada. | Mengembalikan lebar yang diminta dalam poin. | float | Tidak ada yang diharapkan. | Digunakan untuk menentukan ukuran objek form yang diimpor. |
ChromeRenderResult::getHeightPt() | tidak ada. | Mengembalikan tinggi yang dihitung atau diminta dalam poin. | float | Tidak ada yang diharapkan. | Tinggi otomatis menyertakan buffer tata letak cetak. |
ViewportCalculator::pointsToCssPx(float $pt) | pt: poin PDF. | Mengonversi memakai 96 px CSS per 72 poin PDF. | int | Tidak ada yang diharapkan. | Dibulatkan untuk lebar viewport Chrome. |
ViewportCalculator::cssPxToPoints(float $px) | px: piksel CSS. | Mengonversi memakai 72 poin PDF per 96 px CSS. | float | Tidak ada yang diharapkan. | Digunakan untuk perhitungan tinggi otomatis. |
API impor dan parser
Bagian berjudul “API impor dan parser”Ini adalah jalur impor. Urai byte PDF Chrome dengan PdfReader, lalu teruskan reader tersebut ke PageImporter::import() untuk memperoleh halaman yang dapat ditanamkan; metode PdfReader lainnya mendukung diagnostik.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
new PdfReader(string $data) | data: byte PDF lengkap. | Parser tidak dijalankan hingga parse(). | PdfReader | Tidak ada yang diharapkan. | Dirancang untuk PDF yang dihasilkan Chrome. |
PdfReader::parse() | tidak ada. | Mengurai rantai referensi-silang (xref) dan trailer. | void | PdfParseException untuk struktur PDF yang tidak valid. | Harus dipanggil sebelum akses object/page. |
PdfReader::getObject(int $objNum) | Nomor objek. | Menyelesaikan objek terurai berdasarkan nomor. | PdfObject | PdfParseException ketika objek hilang atau rusak. | Gunakan setelah parse(). |
PdfReader::getTrailer() | tidak ada. | Mengembalikan kamus trailer terurai. | array | PdfParseException ketika data trailer tidak tersedia. | Digunakan oleh diagnostik dan analisis revisi. |
PdfReader::getObjectNumbers() | tidak ada. | Mengembalikan nomor objek yang telah diurai. | array | Tidak ada yang diharapkan setelah parse. | Berguna untuk diagnostik importer. |
PdfReader::getPage(int $pageIndex) | pageIndex: indeks halaman berbasis nol. | Tidak ada parse implisit. | PdfObject | PdfParseException ketika hilang atau di luar jangkauan. | Importer secara standar memakai halaman 0. |
PdfReader::getPageContentStream(PdfObject $page) | page: objek halaman terurai. | Menyelesaikan aliran konten. | string | PdfParseException untuk aliran yang tidak valid. | Aliran kosong menyebabkan kegagalan importer. |
PdfReader::getPageResources(PdfObject $page) | page: objek halaman terurai. | Menyelesaikan sumber daya halaman. | array | PdfParseException untuk sumber daya yang tidak valid. | Kamus sumber daya ditanamkan bersama objek form. |
PdfReader::getPageMediaBox(PdfObject $page) | page: objek halaman terurai. | Kembali ke dimensi seperti A4 ketika tidak ada. | array | Kegagalan parser. | Mengembalikan koordinat ruang PDF. |
PdfReader::resolveRef(mixed $value) | Nilai terurai. | Menyelesaikan referensi objek secara rekursif jika berlaku. | mixed | PdfParseException untuk referensi yang tidak valid. | Pembantu bergaya internal yang dipaparkan untuk alur kerja importer. |
PdfReader::collectPageResources(PdfObject $page) | page: objek halaman terurai. | Menelusuri referensi sumber daya halaman. | array | Kegagalan parser. | Digunakan untuk menanamkan objek dependen bersama halaman yang diimpor. |
PdfReader::getRevisionCount() | tidak ada. | Menghitung revisi inkremental yang telah diurai. | int | Tidak ada yang diharapkan setelah parse. | Berguna untuk PDF yang ditandatangani atau diperbarui secara inkremental. |
PdfReader::getRevisionXRef(int $index) | Indeks revisi berbasis nol. | Mengembalikan satu tabel xref revisi. | RevisionXRefTable | PdfParseException untuk indeks yang tidak valid. | Gunakan untuk diagnostik revisi tingkat rendah. |
PdfReader::getRevisions() | tidak ada. | Mengembalikan semua tabel xref revisi yang telah diurai. | array | Tidak ada yang diharapkan setelah parse. | Tampilan status parser hanya baca. |
PageImporter::import(PdfReader $reader, int $pageIndex = 0) | Reader terurai dan indeks halaman berbasis nol. | Mengimpor halaman pertama ketika diabaikan. | ImportedFormXObject | PdfParseException ketika halaman tidak dapat diekstraksi. | Mengumpulkan aliran konten, media box, sumber daya, dan objek yang direferensikan. |
Objek pendukung parser
Bagian berjudul “Objek pendukung parser”Objek nilai dan pembantu ini dikembalikan oleh parser atau digunakan secara internal. Gunakan saat Anda memeriksa objek, sumber daya, aliran, atau tabel revisi hasil impor.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
new ImportedFormXObject(string $contentStream, array $mediaBox, array $embeddedObjects, array $resourcesDict) | Aliran konten terdekode, media box, objek tertanam, kamus sumber daya. | Menyimpan payload form hasil impor yang mandiri. | ImportedFormXObject | Tidak ada yang diharapkan. | Biasanya dikembalikan oleh PageImporter::import(). |
ImportedFormXObject::getWidth() | tidak ada. | Mengembalikan lebar form yang diimpor dalam poin. | float | Tidak ada yang diharapkan. | Gunakan saat menempatkan keluaran Chrome ke dalam halaman. |
ImportedFormXObject::getHeight() | tidak ada. | Mengembalikan tinggi form yang diimpor dalam poin. | float | Tidak ada yang diharapkan. | Hasil render dengan tinggi otomatis disebarkan melalui nilai ini. |
ImportedFormXObject::getEmbeddedObjects() | tidak ada. | Mengembalikan objek yang diperlukan oleh form yang diimpor. | array | Tidak ada yang diharapkan. | Kode writer memakai objek-objek ini untuk mempertahankan sumber daya. |
ImportedFormXObject::getResourcesDict() | tidak ada. | Mengembalikan kamus sumber daya yang diimpor. | array | Tidak ada yang diharapkan. | Digunakan saat membangun form XObject. |
ImportedFormXObject::getMediaBox() | tidak ada. | Mengembalikan media box yang diimpor. | array | Tidak ada yang diharapkan. | Gunakan untuk diagnostik penempatan. |
ImportedFormXObject::getContentStream() | tidak ada. | Mengembalikan aliran konten halaman yang diimpor. | string | Tidak ada yang diharapkan. | Ditujukan untuk integrasi writer/import. |
new PdfObject(int $objectNumber, int $generation, array $dictionary, ?string $rawStreamData = null, ?string $decodedStreamData = null, ?string $rawDictionaryBytes = null) | Nomor objek, generasi, kamus terurai, byte aliran opsional, aliran terdekode opsional, byte kamus mentah opsional. | Menyimpan status objek yang telah diurai. | PdfObject | Tidak ada yang diharapkan. | Dibuat oleh bagian internal parser. |
PdfObject::getRawDictionaryBytes() | tidak ada. | Mengembalikan byte kamus asli ketika tersedia. | `string | null` | Tidak ada yang diharapkan. |
PdfObject::getRawStreamData() | tidak ada. | Mengembalikan byte aliran yang belum terdekode ketika tersedia. | `string | null` | Tidak ada yang diharapkan. |
PdfObject::getDictionary() | tidak ada. | Mengembalikan entri kamus yang telah diurai. | array | Tidak ada yang diharapkan. | Tampilan parser hanya baca. |
PdfObject::get(string $key) | Kunci kamus. | Mengembalikan null ketika kunci tidak ada. | mixed | Tidak ada yang diharapkan. | Mencegah pemanggil mengurai kamus mentah. |
PdfObject::getRef(string $key) | Kunci kamus. | Mengembalikan tuple referensi objek ketika nilainya berupa referensi. | `array | null` | Tidak ada yang diharapkan. |
PdfObject::getArray(string $key) | Kunci kamus. | Mengembalikan nilai larik atau larik kosong ketika tidak tersedia. | array | Tidak ada yang diharapkan. | Pembungkus praktis untuk entri kamus bernilai larik. |
PdfObject::hasStream() | tidak ada. | Memeriksa apakah byte aliran tersedia. | bool | Tidak ada yang diharapkan. | Membedakan objek yang hanya berupa kamus. |
PdfObject::getType() | tidak ada. | Membaca /Type. | `string | null` | Tidak ada yang diharapkan. |
PdfObject::getSubtype() | tidak ada. | Membaca /Subtype. | `string | null` | Tidak ada yang diharapkan. |
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision) | Byte PDF, reader terurai, dan indeks revisi berbasis nol. | Mengekstraksi satu revisi inkremental. | string | PdfParseException untuk batas yang tidak valid. | Digunakan oleh pengujian dan diagnostik parser. |
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader) | Byte PDF dan reader terurai. | Menemukan rentang byte untuk revisi inkremental. | array | PdfParseException untuk struktur xref yang rusak. | Membantu menganalisis PDF yang ditandatangani atau diperbarui secara inkremental. |
| `StreamDecoder::decode(string $data, string | array $filter)` | Byte aliran dan satu atau lebih filter PDF. | Menerapkan filter secara berurutan. | string | PdfParseException untuk filter yang tidak didukung atau tidak valid. |
new ResourceCollector(PdfReader $reader) | Reader terurai. | Dimulai dengan kumpulan objek yang masih kosong. | ResourceCollector | Tidak ada yang diharapkan. | Digunakan oleh PdfReader::collectPageResources(). |
ResourceCollector::traverse(mixed $value, int $depth = 0) | Nilai terurai dan kedalaman rekursi. | Menelusuri referensi sumber daya hingga batas kedalaman internal. | void | Kegagalan parser untuk referensi yang tidak valid. | Pembantu internal untuk melengkapi sumber daya impor halaman. |
ResourceCollector::getCollected() | tidak ada. | Mengembalikan objek sumber daya yang terkumpul. | array | Tidak ada yang diharapkan. | Panggil setelah traverse(). |
new RevisionXRefTable(int $index, int $xrefOffset, array $xrefEntries, array $trailer, ?int $prevOffset) | Indeks revisi, offset xref, entri xref, trailer, offset sebelumnya opsional. | Snapshot tetap dari satu revisi inkremental. | RevisionXRefTable | Tidak ada yang diharapkan. | Dibuat oleh bagian internal parser. |
RevisionXRefTable::getObjectNumbers() | tidak ada. | Mengembalikan nomor objek yang aktif dalam tabel revisi. | array | Tidak ada yang diharapkan. | API diagnostik revisi tingkat rendah. |
RevisionXRefTable::getActiveObjectCount() | tidak ada. | Menghitung objek aktif. | int | Tidak ada yang diharapkan. | Berguna untuk asersi parser. |
RevisionXRefTable::hasRootUpdate() | tidak ada. | Melaporkan apakah revisi memperbarui akar dokumen. | bool | Tidak ada yang diharapkan. | Berguna untuk analisis pembaruan inkremental. |
RevisionXRefTable::getSize() | tidak ada. | Mengembalikan nilai ukuran tabel xref. | int | Tidak ada yang diharapkan. | Mencerminkan metadata xref PDF yang telah diurai. |
API tokenizer dan xref tingkat rendah
Bagian berjudul “API tokenizer dan xref tingkat rendah”Gunakan API ini hanya untuk diagnostik parser mendalam atau reduksi fixture. API ini memaparkan lexer dan mesin referensi silang di bawah PdfReader dan tidak diperlukan untuk impor normal.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
new PdfTokenizer(string $data, int $offset = 0) | Byte PDF dan offset awal opsional. | Dimulai pada offset nol. | PdfTokenizer | Tidak ada yang diharapkan. | Parser leksikal tingkat rendah. |
PdfTokenizer::getOffset() | tidak ada. | Mengembalikan offset byte saat ini. | int | Tidak ada yang diharapkan. | Pembantu diagnostik untuk galat parser. |
PdfTokenizer::setOffset(int $offset) | Offset byte. | Memindahkan kursor tokenizer. | void | PdfParseException untuk offset yang tidak valid. | Gunakan dengan hati-hati; pemanggil memiliki status parser. |
PdfTokenizer::isEof() | tidak ada. | Memeriksa apakah kursor telah mencapai akhir. | bool | Tidak ada yang diharapkan. | Pembantu perulangan parser tingkat rendah. |
PdfTokenizer::skipWhitespace() | tidak ada. | Maju melewati spasi kosong dan komentar PDF. | void | Tidak ada yang diharapkan. | Digunakan sebelum pembacaan token. |
PdfTokenizer::readToken() | tidak ada. | Membaca token skalar berikutnya. | `string | int | float |
PdfTokenizer::readName() | tidak ada. | Membaca objek nama PDF. | string | PdfParseException untuk nama yang rusak. | Mendekode escape nama. |
PdfTokenizer::readLiteralString() | tidak ada. | Membaca string literal. | string | PdfParseException untuk string yang rusak. | Menangani tanda kurung bersarang dan escape. |
PdfTokenizer::readHexString() | tidak ada. | Membaca string heksadesimal. | string | PdfParseException untuk heks yang rusak. | Memberi padding pada heks berpanjang ganjil sesuai aturan parser. |
PdfTokenizer::readNumber() | tidak ada. | Membaca integer atau float. | `int | float` | PdfParseException untuk angka yang tidak valid. |
PdfTokenizer::readKeyword() | tidak ada. | Membaca kata kunci PDF. | string | PdfParseException untuk kata kunci yang tidak valid. | Menjaga penguraian kata kunci tetap terpusat. |
PdfTokenizer::readDictionary() | tidak ada. | Membaca kamus PDF. | array | PdfParseException untuk kamus yang rusak. | Digunakan untuk objek, aliran, dan trailer. |
PdfTokenizer::readArray() | tidak ada. | Membaca larik PDF. | array | PdfParseException untuk larik yang rusak. | Pembantu parser rekursif. |
PdfTokenizer::readValue() | tidak ada. | Membaca nilai PDF apa pun yang didukung. | mixed | PdfParseException untuk nilai yang rusak. | Primitif parser umum. |
PdfTokenizer::readStreamData(int $length) | Panjang aliran. | Membaca byte aliran tepat sebanyak yang diminta. | string | PdfParseException untuk batas aliran yang tidak valid. | Digunakan setelah resolusi panjang aliran kamus. |
PdfTokenizer::peek(int $length = 1) | Jumlah byte. | Membaca ke depan tanpa memajukan kursor. | string | Tidak ada yang diharapkan. | Berguna untuk percabangan parser. |
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0) | Pola dan offset awal opsional. | Mencari mundur dari akhir atau dari offset yang diberikan. | `int | false` | Tidak ada yang diharapkan. |
PdfTokenizer::readLine() | tidak ada. | Membaca satu baris dari offset saat ini. | string | Tidak ada yang diharapkan. | Pembantu pemindai tingkat rendah. |
CrossRefParser::parseXRefTable(string $data, int $offset) | Byte PDF dan offset tabel xref. | Mengurai entri tabel referensi silang klasik. | array | PdfParseException untuk data xref yang rusak. | API parser tingkat rendah. |
CrossRefParser::parseXRefStream(string $data, int $offset) | Byte PDF dan offset aliran xref. | Mengurai entri aliran referensi silang. | array | PdfParseException untuk data aliran yang rusak. | Mendukung aliran xref PDF modern. |
Factory opsional dan browser pool
Bagian berjudul “Factory opsional dan browser pool”EInvoiceServiceFactory menyelesaikan kontrak e-invoice Premium opsional secara lazy dan mengembalikan null ketika kontrak tersebut tidak ada. BrowserPool mengelola siklus hidup Chrome milik renderer; kelola langsung hanya di worker yang berjalan lama.
| Simbol | Parameter | Perilaku standar | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
EInvoiceServiceFactory::makeEmbedder() | tidak ada. | Mengembalikan null kecuali dukungan e-invoice Premium Pro terpasang. | `EmbedderInterface | null` | Galat konstruksi paket opsional. |
EInvoiceServiceFactory::makeValidator() | tidak ada. | Mengembalikan null kecuali dukungan validasi Premium Enterprise terpasang. | `ValidatorInterface | null` | Galat konstruksi paket opsional. |
EInvoiceServiceFactory::makeDefaultProfile() | tidak ada. | Mengembalikan profil e-invoice standar ketika tersedia. | `ProfileInterface | null` | Galat paket opsional. |
EInvoiceServiceFactory::makeSchematronRunner() | tidak ada. | Mengembalikan null kecuali dukungan Schematron Premium Enterprise terpasang. | `SchematronRunnerInterface | null` | Galat konstruksi paket opsional. |
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null) | Konfigurasi renderer dan logger opsional. | Browser dimulai secara lazy pada getBrowser() pertama. | BrowserPool | Tidak ada yang diharapkan hingga browser dimulai. | Pembantu siklus hidup milik renderer. |
BrowserPool::getBrowser() | tidak ada. | Memulai atau mengembalikan instance browser Chrome saat ini. | Browser | Galat saat memulai browser. | Pembantu siklus hidup milik renderer. |
BrowserPool::incrementRenderCount() | tidak ada. | Menambah penghitung render dan merotasi ketika kebijakan pool memerlukannya. | void | Galat siklus hidup browser. | Digunakan oleh worker yang berjalan lama. |
BrowserPool::close() | tidak ada. | Menutup instance browser yang dikelola. | void | Galat penonaktifan browser. | Panggil saat worker dinonaktifkan. |
Catatan pengembangan
Bagian berjudul “Catatan pengembangan”- Renderer ini bukan sandbox browser untuk HTML yang tidak tepercaya. Validasi ukuran, kebijakan sumber daya, dan otorisasi pemanggil sebelum proses render.
- API parser sengaja dibuat sempit. Gunakan untuk impor keluaran Chrome, bukan perbaikan PDF umum.
- Tutup renderer secara eksplisit di worker yang berumur panjang.