Lewati ke konten
getnextpdf.com

Referensi enum

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.

Enum PHP hadir dalam dua bentuk, dan bentuknya mengubah cara Anda menuliskan nilai:

  • Enum backed (enum X: string atau enum X: int) memiliki value skalar untuk setiap case, sehingga ia bolak-balik melalui X::from('...') / $case->value. Sebagian besar enum di sini adalah backed.
  • Enum pure (enum X tanpa tipe backing) memiliki case tetapi tanpa nilai skalar; Anda selalu merujuknya berdasarkan case (X::SomeCase). Hanya UnderlineStyle yang 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.

Geometri halaman portrait atau landscape. Diberikan saat Anda menambahkan halaman; engine menukar lebar dan tinggi agar cocok.

PropertiNilai
FQCNNextPDF\Contracts\Orientation
Backingstring
Diatur viaDocument::addPage(?PageSize $size = null, Orientation $orientation = Orientation::Portrait)
CaseNilai backing
Portrait'P'
Landscape'L'
use NextPDF\Contracts\Orientation;
use NextPDF\ValueObjects\PageSize;
$pdf->addPage(PageSize::a4(), Orientation::Landscape);

Bagaimana sebuah path terbuka yang di-stroke berakhir. ISO 32000-2:2020 §8.4.3.3.

PropertiNilai
FQCNNextPDF\Graphics\LineCap
Backingint
Diatur viaobjek config LineStyle (new LineStyle(cap: ...)), diterapkan dengan Document::setLineStyle(LineStyle $style)
CaseNilai backingMakna
Butt0Ujung persegi pada titik akhir, tanpa proyeksi.
Round1Busur setengah lingkaran pada titik akhir.
Square2Proyeksi persegi yang memanjang setengah lebar garis melampaui titik akhir.

Bagaimana dua segmen yang di-stroke bertemu di sebuah sudut. ISO 32000-2:2020 §8.4.3.4.

PropertiNilai
FQCNNextPDF\Graphics\LineJoin
Backingint
Diatur viaobjek config LineStyle (new LineStyle(join: ...)), diterapkan dengan Document::setLineStyle(LineStyle $style)
CaseNilai backingMakna
Miter0Sudut tajam yang diperpanjang sampai batas miter.
Round1Busur lingkaran yang menyatukan tepi luar.
Bevel2Diagonal 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);

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.

PropertiNilai
FQCNNextPDF\Graphics\BlendMode
Backingstring
Diatur viaDocument::setAlpha(float $alpha, BlendMode $mode = BlendMode::Normal)
CaseNilai backingCaseNilai 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');

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.

PropertiNilai
FQCNNextPDF\Graphics\RenderingIntent
Backingstring
Diatur viaHanya tingkat-engine — diterapkan pada drawing engine internal; tanpa setter Document/Config publik.
CaseNilai backingMakna
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.

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.

PropertiNilai
FQCNNextPDF\Core\OutputColorProfile
Backingstring
Diatur viaConfig::withOutputColorProfile(OutputColorProfile $profile) (parameter $outputColorProfile pada constructor Config)
CaseNilai backingCatatan
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);

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.

PropertiNilai
FQCNNextPDF\Content\TextRenderingMode
Backingint
Diatur viaDocument::setTextRenderingMode(TextRenderingMode $mode)
CaseNilai backingMakna
Fill0Isi glyph.
Stroke1Stroke garis luar glyph.
FillStroke2Isi lalu stroke.
Invisible3Render secara tidak terlihat (lapisan OCR yang dapat dicari).
FillClip4Isi dan tambahkan ke clipping path.
StrokeClip5Stroke dan tambahkan ke clipping path.
FillStrokeClip6Isi, stroke, dan klip.
Clip7Hanya tambahkan ke clipping path (tanpa render yang terlihat).

Bagaimana dekorasi garis bawah digambar. Ini satu-satunya enum pure di sini, jadi Anda selalu merujuknya berdasarkan case.

PropertiNilai
FQCNNextPDF\Contracts\UnderlineStyle
Backingpure (tanpa nilai backing)
Diatur viaDocument::setUnderlineStyle(UnderlineStyle $style)
CaseMakna
RectFillPersegi panjang terisi di bawah baseline (default kompatibel TCPDF).
StrokeLineGaris 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);

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.

PropertiNilai
FQCNNextPDF\Conformance\ConformanceMode
Backingstring
Diatur viaDocument::setConformanceMode(ConformanceMode $mode) (escape hatch tingkat-lebih-rendah; utamakan enableTaggedPdf() untuk PDF/UA-2 di Core, atau enablePdfA() — hanya-Premium — untuk PDF/A)
CaseNilai backingKontrak
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, dan PdfUa2. Jalur Tagged PDF / PDF/UA dibangun langsung ke dalam Core — enableTaggedPdf() memilih jalur authoring PDF/UA (PdfUa2 secara 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 oleh enablePdfA(), yang merupakan fitur tier Premium (ADR-011): ia memerlukan paket nextpdf/pro dan gagal secara fail-closed dengan InvalidConfigException (“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);

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).

PropertiNilai
FQCNNextPDF\Navigation\AFRelationship
Backingstring
Diatur viaDocument::embedFile(string $path, string $description = '', AFRelationship|string $afRelationship = AFRelationship::Unspecified)
CaseNilai backingPenggunaan
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);