Referensi enum
Sekilas pandang
Bagian berjudul “Sekilas pandang”Beberapa metode authoring NextPDF menerima enum bertipe alih-alih string atau
bilangan bulat polos. Enum itulah kontraknya: ia membatasi argumen pada himpunan
yang tetap dan valid, dan IDE serta PHPStan menolak setiap nilai di luarnya.
Halaman ini adalah lookup nilai-yang-diizinkan untuk enum yang Anda atur (atau
terima) melalui API Document dan Config publik — ditambah satu enum warna
tingkat-engine (RenderingIntent), disertakan karena case-nya merupakan bagian
dari kontrak warna publik dan ditandai sebagai tingkat-engine di tempat ia
muncul.
Ini adalah pendamping bagi referensi konfigurasi. Jika
objek Config memberi tahu Anda tuas mana yang
harus diputar, halaman ini memberi tahu Anda nilai apa yang diterima tuas itu.
Setiap entri mencantumkan nama kelas yang sepenuhnya terkualifikasi (FQCN) milik
enum, tipe backing-nya, daftar case persis yang disalin dari kode sumber, serta
metode publik yang menerimanya.
Enum internal-engine yang dalam (tata letak HTML/CSS, abstract syntax tree, CLI,
internal shaper) sengaja dikecualikan — Anda tidak pernah mengaturnya. Hampir
semua yang ada di bawah adalah nilai yang Anda berikan melalui API publik; satu
pengecualiannya, RenderingIntent, adalah enum warna tingkat-engine tanpa setter
publik, dicantumkan demi kelengkapan dan dilabeli demikian di tempat ia muncul.
Tipe backing
Bagian berjudul “Tipe backing”Enum PHP hadir dalam dua bentuk, dan bentuknya mengubah cara Anda menuliskan nilai:
- Enum backed (
enum X: stringatauenum X: int) memilikivalueskalar untuk setiap case, sehingga ia bolak-balik melaluiX::from('...')/$case->value. Sebagian besar enum di sini adalah backed. - Enum pure (
enum Xtanpa tipe backing) memiliki case tetapi tanpa nilai skalar; Anda selalu merujuknya berdasarkan case (X::SomeCase). HanyaUnderlineStyleyang pure.
Pada kedua bentuk, Anda memberikan case itu sendiri — misalnya
$pdf->addPage(orientation: Orientation::Landscape). Tipe backing baru relevan
hanya ketika Anda perlu menserialisasi pilihannya atau membacanya kembali dari
konfigurasi.
Penyiapan halaman
Bagian berjudul “Penyiapan halaman”Orientation
Bagian berjudul “Orientation”Geometri halaman portrait atau landscape. Diberikan saat Anda menambahkan halaman; engine menukar lebar dan tinggi agar cocok.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Contracts\Orientation |
| Backing | string |
| Diatur via | Document::addPage(?PageSize $size = null, Orientation $orientation = Orientation::Portrait) |
| Case | Nilai backing |
|---|---|
Portrait | 'P' |
Landscape | 'L' |
use NextPDF\Contracts\Orientation;use NextPDF\ValueObjects\PageSize;
$pdf->addPage(PageSize::a4(), Orientation::Landscape);Penggambaran dan grafik
Bagian berjudul “Penggambaran dan grafik”LineCap
Bagian berjudul “LineCap”Bagaimana sebuah path terbuka yang di-stroke berakhir. ISO 32000-2:2020 §8.4.3.3.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Graphics\LineCap |
| Backing | int |
| Diatur via | objek config LineStyle (new LineStyle(cap: ...)), diterapkan dengan Document::setLineStyle(LineStyle $style) |
| Case | Nilai backing | Makna |
|---|---|---|
Butt | 0 | Ujung persegi pada titik akhir, tanpa proyeksi. |
Round | 1 | Busur setengah lingkaran pada titik akhir. |
Square | 2 | Proyeksi persegi yang memanjang setengah lebar garis melampaui titik akhir. |
LineJoin
Bagian berjudul “LineJoin”Bagaimana dua segmen yang di-stroke bertemu di sebuah sudut. ISO 32000-2:2020 §8.4.3.4.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Graphics\LineJoin |
| Backing | int |
| Diatur via | objek config LineStyle (new LineStyle(join: ...)), diterapkan dengan Document::setLineStyle(LineStyle $style) |
| Case | Nilai backing | Makna |
|---|---|---|
Miter | 0 | Sudut tajam yang diperpanjang sampai batas miter. |
Round | 1 | Busur lingkaran yang menyatukan tepi luar. |
Bevel | 2 | Diagonal yang menghubungkan tepi luar. |
LineCap dan LineJoin tidak diberikan ke metode Document secara langsung —
keduanya merupakan field dari value object NextPDF\Graphics\LineStyle yang
immutable, yang kemudian Anda serahkan ke setLineStyle():
use NextPDF\Graphics\{LineStyle, LineCap, LineJoin};
$style = new LineStyle(width: 1.5, cap: LineCap::Round, join: LineJoin::Bevel);$pdf->setLineStyle($style);$pdf->line(20, 20, 120, 20);BlendMode
Bagian berjudul “BlendMode”Fungsi blend transparansi yang diterapkan pada penggambaran berikutnya. Dua belas case pertama bersifat separable; empat case terakhir adalah mode HSL non-separable. ISO 32000-2:2020 §11.3.5.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Graphics\BlendMode |
| Backing | string |
| Diatur via | Document::setAlpha(float $alpha, BlendMode $mode = BlendMode::Normal) |
| Case | Nilai backing | Case | Nilai backing |
|---|---|---|---|
Normal | 'Normal' | HardLight | 'HardLight' |
Multiply | 'Multiply' | SoftLight | 'SoftLight' |
Screen | 'Screen' | Difference | 'Difference' |
Overlay | 'Overlay' | Exclusion | 'Exclusion' |
Darken | 'Darken' | Hue | 'Hue' |
Lighten | 'Lighten' | Saturation | 'Saturation' |
ColorDodge | 'ColorDodge' | Color | 'Color' |
ColorBurn | 'ColorBurn' | Luminosity | 'Luminosity' |
use NextPDF\Graphics\BlendMode;
$pdf->setAlpha(0.6, BlendMode::Multiply);$pdf->rect(20, 20, 80, 40, 'F');RenderingIntent
Bagian berjudul “RenderingIntent”Bagaimana warna di luar gamut dipetakan ulang selama konversi warna. Dipancarkan
sebagai operator ri. ISO 32000-2:2020 §8.6.5.8 (Table 71).
Berbeda dengan enum lain di halaman ini, RenderingIntent tidak memiliki setter
Document atau Config publik — ia adalah enum tingkat-engine. Ia diterapkan
langsung pada drawing engine internal (DrawingEngine::setRenderingIntent()),
yang memancarkan operator ri ke dalam content stream saat ini. Kami
mencantumkannya di sini demi kelengkapan karena case-nya merupakan bagian dari
kontrak warna publik, tetapi ia bukan bagian dari API authoring yang dihadapkan ke
pengembang yang didokumentasikan oleh sisa halaman ini; perlakukan drawing engine
sebagai kelas internal, bukan entrypoint yang Anda program.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Graphics\RenderingIntent |
| Backing | string |
| Diatur via | Hanya tingkat-engine — diterapkan pada drawing engine internal; tanpa setter Document/Config publik. |
| Case | Nilai backing | Makna |
|---|---|---|
RelativeColorimetric | 'RelativeColorimetric' | Pertahankan warna dalam-gamut; klip yang di luar gamut. |
AbsoluteColorimetric | 'AbsoluteColorimetric' | Pertahankan nilai kolorimetrik persis, termasuk putih kertas. |
Saturation | 'Saturation' | Pertahankan saturasi yang hidup dengan mengorbankan hue/luminansi. |
Perceptual | 'Perceptual' | Pertahankan hubungan visual; kompresi gamut yang halus. |
OutputColorProfile
Bagian berjudul “OutputColorProfile”Profil warna ruang-kerja yang dideklarasikan pada /OutputIntent dokumen.
DeviceRGB default mempertahankan perilaku legacy “tanpa OutputIntent tambahan”;
memilih case lain mana pun membuat writer memancarkan OutputIntent /GTS_PDFX
dengan profil ICC yang dibundel (ISO 32000-2:2020 §14.11.5). Ini adalah nilai
Config, bukan metode per-pemanggilan — atur pada objek konfigurasi yang Anda
berikan ke Document.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Core\OutputColorProfile |
| Backing | string |
| Diatur via | Config::withOutputColorProfile(OutputColorProfile $profile) (parameter $outputColorProfile pada constructor Config) |
| Case | Nilai backing | Catatan |
|---|---|---|
DeviceRGB | 'device-rgb' | Default. Tidak ada OutputIntent tambahan yang dipancarkan. |
Srgb | 'srgb' | OutputIntent sRGB eksplisit (IEC 61966-2-1). Bukan wide gamut. |
DisplayP3 | 'display-p3' | Display-P3 wide gamut (D65). |
Rec2020 | 'rec2020' | ITU-R BT.2020 / Rec.2020 wide gamut. |
A98RGB | 'a98-rgb' | Adobe RGB 1998. |
ProphotoRGB | 'prophoto-rgb' | ProPhoto RGB / ROMM RGB (D50). |
use NextPDF\Core\{Config, OutputColorProfile};
$config = (new Config())->withOutputColorProfile(OutputColorProfile::DisplayP3);TextRenderingMode
Bagian berjudul “TextRenderingMode”Apakah glyph diisi, di-stroke, diklip, atau dirender secara tidak terlihat (mode tidak terlihat menjadi dasar bagi lapisan OCR yang dapat dicari). ISO 32000-2:2020 §9.3.6, Table 104.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Content\TextRenderingMode |
| Backing | int |
| Diatur via | Document::setTextRenderingMode(TextRenderingMode $mode) |
| Case | Nilai backing | Makna |
|---|---|---|
Fill | 0 | Isi glyph. |
Stroke | 1 | Stroke garis luar glyph. |
FillStroke | 2 | Isi lalu stroke. |
Invisible | 3 | Render secara tidak terlihat (lapisan OCR yang dapat dicari). |
FillClip | 4 | Isi dan tambahkan ke clipping path. |
StrokeClip | 5 | Stroke dan tambahkan ke clipping path. |
FillStrokeClip | 6 | Isi, stroke, dan klip. |
Clip | 7 | Hanya tambahkan ke clipping path (tanpa render yang terlihat). |
UnderlineStyle
Bagian berjudul “UnderlineStyle”Bagaimana dekorasi garis bawah digambar. Ini satu-satunya enum pure di sini, jadi Anda selalu merujuknya berdasarkan case.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Contracts\UnderlineStyle |
| Backing | pure (tanpa nilai backing) |
| Diatur via | Document::setUnderlineStyle(UnderlineStyle $style) |
| Case | Makna |
|---|---|
RectFill | Persegi panjang terisi di bawah baseline (default kompatibel TCPDF). |
StrokeLine | Garis yang di-stroke di bawah baseline (penggambaran garis semantik). |
use NextPDF\Content\TextRenderingMode;use NextPDF\Contracts\UnderlineStyle;
$pdf->setTextRenderingMode(TextRenderingMode::Invisible); // OCR text layer$pdf->setUnderlineStyle(UnderlineStyle::StrokeLine);Kesesuaian
Bagian berjudul “Kesesuaian”ConformanceMode
Bagian berjudul “ConformanceMode”Kontrak conformance tingkat-dokumen: bagian ISO mana yang harus dihormati writer,
dan apakah tagging struktural diperlukan. Plain default adalah keluaran PDF 2.0
tanpa batasan. ISO 14289-2:2024 (PDF/UA-2) dan bagian-bagian PDF/A ISO 19005.
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Conformance\ConformanceMode |
| Backing | string |
| Diatur via | Document::setConformanceMode(ConformanceMode $mode) (escape hatch tingkat-lebih-rendah; utamakan enableTaggedPdf() untuk PDF/UA-2 di Core, atau enablePdfA() — hanya-Premium — untuk PDF/A) |
| Case | Nilai backing | Kontrak |
|---|---|---|
Plain | 'plain' | PDF 2.0, tanpa batasan (default). |
PdfUa1 | 'pdfua1' | ISO 14289-1 (Tagged PDF/UA-1). |
PdfUa2 | 'pdfua2' | ISO 14289-2:2024 (Tagged PDF/UA-2). |
PdfA2 | 'pdfa2' | ISO 19005-2 (PDF/A-2). |
PdfA3 | 'pdfa3' | ISO 19005-3 (diskriminator profil PDF/A-3). |
PdfA3b | 'pdfa3b' | ISO 19005-3 PDF/A-3b (Basic). |
PdfA3u | 'pdfa3u' | ISO 19005-3 PDF/A-3u (Unicode-extractable). |
PdfA4 | 'pdfa4' | ISO 19005-4:2020 (diskriminator profil PDF/A-4). |
PdfA4e | 'pdfa4e' | ISO 19005-4:2020 PDF/A-4e (Engineering). |
PdfA4f | 'pdfa4f' | ISO 19005-4:2020 PDF/A-4f (File attachments). |
Enum ini membawa helper predikat — isTagged(), isAccessibility(),
isArchival(), dan pdfaPart() — sehingga gate di sisi-writer bercabang
berdasarkan mode alih-alih menurunkannya kembali.
Case mana yang sebenarnya dapat digunakan oleh build Core-saja. Tipe enum
mencantumkan setiap case, tetapi mencantumkan sebuah case tidak sama dengan mampu
menghasilkan conformance itu dari Core:
- Core (tanpa paket tambahan):
Plain,PdfUa1, danPdfUa2. Jalur Tagged PDF / PDF/UA dibangun langsung ke dalam Core —enableTaggedPdf()memilih jalur authoring PDF/UA (PdfUa2secara default) dan menyambungkan structure tree tanpa pemeriksaan lisensi apa pun. - Hanya-Premium: setiap case PDF/A (
PdfA2,PdfA3,PdfA3b,PdfA3u,PdfA4,PdfA4e,PdfA4f). Keluaran PDF/A yang sebenarnya dihasilkan olehenablePdfA(), yang merupakan fitur tier Premium (ADR-011): ia memerlukan paketnextpdf/prodan gagal secara fail-closed denganInvalidConfigException(“install the nextpdf/pro package”) ketika paket itu tidak ada.
setConformanceMode() adalah escape hatch tingkat-lebih-rendah yang hanya menulis
field diskriminator — ia tidak memasang mesin PDF/A. Karena itu, mengatur
sebuah case PdfA* melaluinya dalam build Core-saja akan melabeli dokumen tanpa
memberinya jaminan arsip yang disediakan enablePdfA(), sehingga mode hanya-Premium
tidak boleh diandalkan dalam build Core-saja. Gunakan
enableTaggedPdf() / enablePdfA() untuk jalur conformance yang sebenarnya, dan
beralihlah ke paket Premium kapan pun deliverable PDF/A diperlukan.
use NextPDF\Conformance\ConformanceMode;
$pdf->setConformanceMode(ConformanceMode::PdfUa2);Lampiran
Bagian berjudul “Lampiran”AFRelationship
Bagian berjudul “AFRelationship”Nilai /AFRelationship untuk file terkait yang ditanamkan. Nilai yang tidak
sesuai akan menggagalkan validasi PDF/A-3 dan PDF/A-4, jadi enum adalah cara aman
untuk mengaturnya. ISO 32000-2:2020 §14.13.5 (Table 401).
| Properti | Nilai |
|---|---|
| FQCN | NextPDF\Navigation\AFRelationship |
| Backing | string |
| Diatur via | Document::embedFile(string $path, string $description = '', AFRelationship|string $afRelationship = AFRelationship::Unspecified) |
| Case | Nilai backing | Penggunaan |
|---|---|---|
Source | 'Source' | Dokumen sumber asal PDF dibuat. |
Data | 'Data' | Data mentah asal PDF diturunkan (mis. XML Factur-X / ZUGFeRD). |
Alternative | 'Alternative' | Presentasi alternatif (braille, teks, SVG). |
Supplement | 'Supplement' | Materi pelengkap. |
EncryptedPayload | 'EncryptedPayload' | Blob terenkripsi yang tak tembus pandang yang dibungkus PDF. |
FormData | 'FormData' | Data formulir (XFDF, FDF, XML). |
Schema | 'Schema' | Schema yang mendeskripsikan file Data (XSD, JSON Schema). PDF 2.0. |
Unspecified | 'Unspecified' | Tidak ada relasi yang ditentukan (default). |
embedFile() menerima baik case enum maupun literal string-nya (dengan atau
tanpa garis miring di depan), sehingga AFRelationship::Data dan '/Data'
setara. Memberikan case adalah pilihan yang aman-tipe.
use NextPDF\Navigation\AFRelationship;
// e-invoice payload: declare the XML as the source data$pdf->embedFile('invoice.xml', 'Factur-X invoice data', AFRelationship::Data);Lihat juga
Bagian berjudul “Lihat juga”- Referensi konfigurasi — objek
Configyang nilainya dibatasi oleh enum-enum ini, termasukwithOutputColorProfile(). - Modul Graphics —
LineStyle,BlendMode,RenderingIntent, dan drawing engine. - Modul Typography — render teks dan dekorasi garis bawah.
- Modul Conformance — diskriminator
ConformanceModedan jalur enable PDF/UA / PDF/A. - Modul Navigation — file terkait dan mekanisme
/AF. - Indeks referensi — titik masuk untuk materi referensi API, konfigurasi, dan kompatibilitas.