Kesalahan inti dan umum
Cakupan
Bagian berjudul “Cakupan”Entri-entri ini mencakup eksepsi inti dan serbaguna yang dimunculkan NextPDF.
Sebagian besar memperluas basis NextPdfException, yang sendiri memperluas
\RuntimeException dan mengimplementasikan ContextAwareExceptionInterface.
Antarmuka tersebut memaparkan satu metode, getContext(): array, yang
mengembalikan peta snake_case datar berisi primitif yang aman diserialisasi ke
log atau payload APM.
Tangkap keluarga NextPdfException dengan satu catch (NextPdfException $e).
Tambahkan pula catch (\RuntimeException $e) untuk mencakup beberapa kesalahan
tingkat rendah dalam himpunan ini yang memperluas \RuntimeException secara
langsung (tercantum di bawah). Basis NextPdfException::getContext()
mengembalikan array kosong; subkelas menimpanya untuk menambahkan bidang domain.
Bila sebuah kelas tidak menimpa getContext(), kelas tersebut mewarisi array
kosong dan detail diagnostiknya justru berada di dalam pesan serta getter
bertipe.
Empat tipe dalam himpunan ini tidak memperluas NextPdfException:
BlackPointCompensationUnsupportedException dan
UnsupportedSourceDocumentException memperluas \RuntimeException secara
langsung (tangkap keduanya sebagai \RuntimeException), serta ComplianceViolation dan
RuleViolation adalah objek nilai, bukan eksepsi — keduanya didokumentasikan di
sini karena memodelkan data kesalahan dan pelanggaran yang dikembalikan mesin.
Eksepsi basis
Bagian berjudul “Eksepsi basis”NextPdfException
Bagian berjudul “NextPdfException”- Apa ini. Basis
abstractuntuk keluarga eksepsi NextPDF utama di seluruh core dan paket ekstensinya. Kelas ini memperluas\RuntimeExceptiondan mengimplementasikanContextAwareExceptionInterface. Menangkap tipe tunggal ini mencegat keluargaNextPdfException; beberapa kesalahan yang memperluas\RuntimeExceptionsecara langsung (tercantum di atas) memerlukan penangkap\RuntimeExceptionpula. - Konteks. Basis
getContext()mengembalikan array kosong. Subkelas menimpanya untuk mengembalikan bidang spesifik-domain. - Pemulihan. Tidak dilemparkan secara langsung. Gunakan sebagai tipe penangkap-segala; bercabanglah pada subkelas konkret untuk penanganan spesifik.
Konfigurasi dan feature gating
Bagian berjudul “Konfigurasi dan feature gating”InvalidConfigException
Bagian berjudul “InvalidConfigException”- Kapan dilemparkan. Ketika sebuah nilai
Configatau kombinasi nilai tidak valid — sebuah pengaturan wajib yang hilang, opsi yang saling eksklusif, atau nilai di luar rentang yang diterimanya. Ini menandakan kesalahan pengembang: kode pemanggil menyuplai konfigurasi yang harus diperbaiki sebelum dicoba ulang. Pesan tersebut melaporkan kunci, tipe atau rentang yang diharapkan, dan tipe debug aktual dari nilai yang disuplai. - Konteks.
getContext()mengembalikanconfig_key,given_value, danexpected_type. Getter bertipe:getConfigKey(),getGivenValue(),getExpectedType(). - Pemulihan. Tindakan pengembang: perbaiki kunci konfigurasi yang disebut menjadi nilai bertipe atau berentang yang diharapkan sebelum memanggil NextPDF lagi.
NotImplementedException
Bagian berjudul “NotImplementedException”- Kapan dilemparkan. Ketika titik masuk API publik tercapai tetapi
implementasinya sengaja tidak ada dalam rilis saat ini. Digunakan untuk
shim usang yang ada untuk memberi pemanggil pra-bisect kegagalan yang lantang dan
dapat ditindaklanjuti, alih-alih no-op yang senyap. Pesan tersebut menggabungkan
label
featureyang dapat di-grep mesin dan referensifollowUp(ID cacat, jangkar pelacakan, atau nama sprint). - Konteks. Tidak menimpa
getContext(), sehingga mengembalikan array kosong. Nilai$featuredan$followUpadalah properti readonly publik dan disematkan dalam pesan. - Pemulihan. Tindakan pemanggil-pustaka: hapus panggilan tersebut, atau pin ke rilis mendatang yang mendaratkan follow-up yang disebut.
IncompatibleFeatureFlagsException
Bagian berjudul “IncompatibleFeatureFlagsException”- Kapan dilemparkan. Pada saat build
Config(Config::validate()) ketika kombinasiCssFeatureFlagstidak konsisten secara internal — satu flag mengandaikan flag lain yang dinonaktifkan. Satu-satunya kombinasi terlarang saat ini adalahlayoutSubgrid = truedenganlayoutGrid = false: sumbu ber-subgrid menurunkan garis gridnya dari kontainer grid induk (CSS Grid Layout Module Level 2 §1), sehingga subgrid tanpa grid menggambarkan grid yang tidak mungkin ada. Pemeriksaan ini berjalan terhadap flag yang teresolusi, sehinggaCssRenderingMode::Safe(yang memaksa setiap fitur Phase 4+ nonaktif) menutupi kombinasi tersebut alih-alih memicunya. MemperluasStrictModeViolation. - Konteks.
getContext()menggabungkan bidang strict-mode induk (cssDeviation,excId,chunkSha256,location) dengan booleanlayoutGriddanlayoutSubgrid.locationadalahConfig::validate()dancssDeviationmengkodekan pasangan flag tersebut. - Pemulihan. Tindakan pemanggil-pustaka: aktifkan
layoutGridbersamalayoutSubgrid, atau nonaktifkanlayoutSubgrid.
IncompatibleRenderingModeException
Bagian berjudul “IncompatibleRenderingModeException”- Kapan dilemparkan. Pada saat build
Configketika pemasanganCssRenderingModedanCssLayoutModejatuh di luar sel kompatibel dari matriks mode. Satu-satunya pemasangan terlarang saat ini adalahCssRenderingMode::Safe+CssLayoutMode::Retained— Safe memaksa setiap fitur Phase 4+ nonaktif, sehingga konteks pemformatan mode-retained (Grid, Subgrid,@container) tidak memiliki konsumen, dan karenanya kombinasi tersebut ditolak alih-alih dibiarkan terdegradasi secara senyap. MemperluasStrictModeViolation. - Konteks.
getContext()menggabungkan bidang strict-mode induk denganmode1(nilai rendering-mode) danmode2(nilai layout-mode).cssDeviationmengkodekan pasangan mode tersebut;locationadalahConfig::validate(). - Pemulihan. Tindakan pemanggil-pustaka: pilih
Safe+Streaminguntuk rollback, atau mode rendering non-Safe (Normal/Strict/Audit) denganRetaineduntuk Grid / Subgrid / Container Queries.
StrictModeViolation
Bagian berjudul “StrictModeViolation”- Kapan dilemparkan. Basis
abstractuntuk setiap eksepsi penyimpangan-spesifikasi yang dilemparkan di bawahCssRenderingMode::Strict. Dalam strict mode, setiap penyimpangan CSS yang terdeteksi dan tidak ditautkan ke entri eksepsiEXC-NNNterdaftar akan melemparkan instance dari kelas ini (atau subkelas) pada titik deteksi. Tidak dilemparkan secara langsung; lihatIncompatibleFeatureFlagsExceptiondanIncompatibleRenderingModeException. - Konteks.
getContext()mengembalikan empat bidang ADR-023:cssDeviation(label singkat untuk konstruk yang menyimpang),excId(pengenal registri saat terdaftar, jika tidaknull),chunkSha256(hash chunk kutipan-spesifikasi saat diketahui, jika tidaknull), danlocation(asal yang dapat dibaca pemanggil, jika tidaknull). - Pemulihan. Tindakan pemanggil-pustaka: daftarkan penyimpangan tersebut sebagai entri
EXC-NNNbaru yang telah disetujui, atau perbaiki renderer untuk menghilangkan penyimpangan.
Masukan HTML dan CSS
Bagian berjudul “Masukan HTML dan CSS”HtmlParsingException
Bagian berjudul “HtmlParsingException”- Kapan dilemparkan. Ketika penguraian masukan HTML atau konstruksi DOM gagal:
deklarasi charset tidak valid, pelanggaran batas-ukuran-masukan, kedalaman penyarangan
berlebihan, overflow jumlah-elemen, dan kesalahan struktur-tabel seperti maksimum
jumlah baris. Pengurasan sumber daya yang spesifik-CSS justru dilaporkan oleh
CssParserLimitExceededExceptiondanCssResolutionBudgetExceededException. - Konteks.
getContext()mengembalikanhtml_snippet(kutipan singkat yang dipangkas dari HTML yang bermasalah),position(offset byte, atau-1jika tidak diketahui), danrule(batasan parser yang dilanggar). Getter bertipe:getHtmlSnippet(),getPosition(),getRule(). - Pemulihan. Tindakan pengembang: sederhanakan masukan HTML atau sesuaikan batas parser.
CssParserLimitExceededException
Bagian berjudul “CssParserLimitExceededException”- Kapan dilemparkan. Ketika masukan CSS melampaui batas keamanan parser
yang dikonfigurasi. Dua kategori dicakup melalui konstruktor yang dinamai:
forByteLimit()(stylesheet terlalu besar untuk pemrosesan regex yang aman) danforNestingDepth()(rekursi penyarangan CSS terlalu dalam). Kedua pesan menyebutkan nilai aktual dan batasnya. - Konteks.
getContext()mengembalikanlimit_type(byteataunesting_depth),actual, danlimit. - Pemulihan. Tindakan pengembang: pecah stylesheet menjadi lembar yang lebih kecil, atau kurangi kedalaman penyarangan, atau naikkan batas yang dikonfigurasi.
CssResolutionBudgetExceededException
Bagian berjudul “CssResolutionBudgetExceededException”- Kapan dilemparkan. Ketika resolusi CSS
:has()melampaui anggaran penelusurannya. Resolver:has()dua-lintasan menegakkan anggaran kunjungan-node yang ketat untuk mencegah selektor patologis menyebabkan penelusuran dokumen kuadratik; setelah total jumlah kunjungan melampaui batas, stylesheet ditolak karena terlalu kompleks. Pesan tersebut menyebutkan jumlah kunjungan dan anggarannya. - Konteks.
getContext()mengembalikanvisitsdanbudget. Getter bertipe:getVisits(),getBudget(). - Pemulihan. Tindakan pengembang: kurangi kompleksitas selektor, atau naikkan anggaran yang dikonfigurasi.
Font dan gambar
Bagian berjudul “Font dan gambar”FontNotFoundException
Bagian berjudul “FontNotFoundException”- Kapan dilemparkan. Ketika berkas font tidak dapat ditemukan atau dibaca pada tingkat sistem berkas: keluarga atau jalur yang diminta tidak ada, tidak dapat dibaca, atau direktori font yang dikonfigurasi tidak dapat diakses. Data font mungkin valid — ini hanya menandakan bahwa data tersebut tidak dapat dijangkau. Pesan tersebut mencantumkan jalur yang dicari.
- Konteks.
getContext()mengembalikanfont_name,search_paths(sebuah daftar), danfallback_attempted(sebuah bool). Getter bertipe:getFontName(),getSearchPaths(),wasFallbackAttempted(). - Pemulihan. Tindakan pengembang: verifikasi jalur font. Tindakan infrastruktur: perbaiki izin berkas pada berkas atau direktori font.
FontParsingException
Bagian berjudul “FontParsingException”- Kapan dilemparkan. Ketika berkas font ditemukan tetapi isinya tidak
dapat digunakan: rusak, dalam format yang tidak didukung, atau kehilangan tabel wajib.
Mencakup kegagalan validasi struktural selama penguraian TrueType, Type 1, CFF, dan
OpenType — header terpotong, direktori tabel tidak valid, tabel
wajib yang hilang (
head,hhea,OS/2), kesalahan pembongkaran, dan pelanggaran ukuran. Pesan tersebut menyebutkan berkas dan kesalahan penguraian. - Konteks.
getContext()mengembalikanfont_filedanparse_error. Getter bertipe:getFontFile(),getParseError(). - Pemulihan. Tindakan pengembang: ganti berkas font dengan berkas yang valid.
ImageProcessingException
Bagian berjudul “ImageProcessingException”- Kapan dilemparkan. Ketika sebuah gambar tidak dapat didekode, dalam format yang tidak didukung, atau gagal pemrosesan GD/Imagick: magic byte tak dikenal, data JPEG rusak, tipe MIME yang tidak didukung, pelanggaran batas-ukuran-berkas, dan kegagalan alokasi sumber daya GD. Gambar dapat diakses tetapi data pikselnya tidak dapat diekstraksi untuk penyematan.
- Konteks.
getContext()mengembalikanimage_path(kosong untuk data inline),format(yang terdeteksi atau diharapkan, mis.jpeg,png,unknown), danoperation(mis.decode,resize,embed). Getter bertipe:getImagePath(),getFormat(),getOperation(). - Pemulihan. Tindakan pengembang: suplai berkas gambar yang valid dan didukung.
Keluaran, tata letak, dan serialisasi
Bagian berjudul “Keluaran, tata letak, dan serialisasi”CompressionException
Bagian berjudul “CompressionException”- Kapan dilemparkan. Ketika kompresi atau dekompresi FlateDecode (zlib)
gagal — kegagalan
gzcompress/gzuncompresspada content stream, data font, konten halaman, data lampiran, dan cross-reference stream. Biasanya berupa stream masukan yang rusak, memori tidak cukup, atau ekstensi zlib yang hilang. - Konteks.
getContext()mengembalikanalgorithm(nama filter, mis.FlateDecode,LZWDecode) danstream_length(panjang byte, atau-1jika tidak diketahui). Getter bertipe:getAlgorithm(),getStreamLength(). - Pemulihan. Tindakan infrastruktur: verifikasi
ext-zlibdimuat dan memori mencukupi.
WriterException
Bagian berjudul “WriterException”- Kapan dilemparkan. Ketika serialisasi PDF, linearisasi, atau keluaran I/O
gagal: kesalahan penulisan-stream
PdfWriter, korupsi tabel cross-reference, kegagalan pembuatan header/trailer, kegagalan resolusi referensi-objek, kesalahan penulisan berkas, dan overflow buffer-keluaran. Dokumen dalam-memori yang valid tidak dapat diserialisasi menjadi stream byte yang valid. Pesan tersebut menyebutkan tahapnya. - Konteks.
getContext()mengembalikanoutput_path(kosong untuk keluaran string) danwriter_state(tahap, mis.header,body,xref,trailer). Getter bertipe:getOutputPath(),getWriterState(). - Pemulihan. Tindakan infrastruktur: periksa ruang disk, izin berkas, dan stream keluaran.
PageLayoutException
Bagian berjudul “PageLayoutException”- Kapan dilemparkan. Ketika batasan tata letak halaman tidak dapat dipenuhi: pelanggaran tata letak kolom (lebar tidak cukup, jumlah kolom tidak valid), overflow konten di luar batas halaman, dan konflik margin. Tata letak yang diminta secara geometris mustahil untuk dimensi halaman dan konten yang diberikan. Pesan tersebut menyebutkan nomor halaman saat diketahui dan batasan yang dilanggar.
- Konteks.
getContext()mengembalikanpage_number(berbasis-satu, atau0jika tidak diketahui) danconstraint. Getter bertipe:getPageNumber(),getConstraint(). - Pemulihan. Tindakan pengembang: sesuaikan ukuran halaman, margin, setelan kolom, atau konten.
TemplateException
Bagian berjudul “TemplateException”- Kapan dilemparkan. Ketika operasi impor atau penggunaan ulang template PDF gagal di
TemplateManager: transisi status template tidak valid (memulai atau mengakhiri template di luar urutan), mereferensikan template yang tidak ada, dan kegagalan kompresi stream selama serialisasi template. Pesan tersebut menyebutkan operasi dan id template saat ditetapkan. - Konteks.
getContext()mengembalikantemplate_id(kosong jika belum ditetapkan) danoperation(mis.begin,end,use,serialize). Getter bertipe:getTemplateId(),getOperation(). - Pemulihan. Tindakan pengembang: perbaiki urutan penggunaan template atau PDF sumbernya.
Invarian content-stream
Bagian berjudul “Invarian content-stream”ContentStreamBalanceException
Bagian berjudul “ContentStreamBalanceException”- Kapan dilemparkan. Ketika
ContentStreamBuildermendeteksi pasangan operator yang tidak seimbang saat penutupan stream (atau di tengah stream ketika invarian ditegakkan secara dini). Eksepsi ini menangkap penghitung kedalaman yang gagal memenuhi invarian keseimbangan agar pencatatan log dapat mengidentifikasi emitter mana yang membocorkanq,BT, atauBMCtanpa pasanganQ,ET, atauEMC-nya. Sesuai ISO 32000-2:2020 §8.4.2 (tumpukan status-grafik), §9.4.1 (objek teks), dan §14.6 (marked content). - Konteks.
getContext()mengembalikangraphics_depth,text_block_depth,marked_content_depth, danoffending_operator. Getter bertipe:getGraphicsDepth(),getTextBlockDepth(),getMarkedContentDepth(),getOffendingOperator(). - Pemulihan. Tindakan pengembang: temukan emitter yang membuka sebuah konstruk tanpa menutupnya.
GraphicsStateBalanceException
Bagian berjudul “GraphicsStateBalanceException”- Kapan dilemparkan. Ketika sebuah PDF content stream ditutup dengan operator
q/Qyang tidak seimbang. ISO 32000-2:2020 §8.4.2 mewajibkan setiap penyimpanan status-grafik (q) dipasangkan dengan tepat satu pemulihan (Q) sebelum stream berakhir; ketidakseimbangan membocorkan transform, clipping path, warna, dan rendering intent ke halaman berikutnya atau Form XObject. Dimunculkan hanya ketika pemeriksaan status-grafik ketat diaktifkan (NEXTPDF_GFXSTATE_STRICT=1); dalam mode relaksasi, peringatan dipancarkan melaluitrigger_error()sebagai gantinya. - Konteks.
getContext()mengembalikansave_depth(positif untuk penyimpanan terlalu banyak, negatif untuk pemulihan terlalu banyak). Getter bertipe:getSaveDepth(). - Pemulihan. Tindakan pengembang: temukan pasangan
save()/restore()yang tidak berpasangan.
MissingShadingResourceException
Bagian berjudul “MissingShadingResourceException”- Kapan dilemparkan. Ketika
ConicGradientRenderer::render()dipanggil tanpa konteks registri Shading-resource. Perubahan yang memutus kompatibilitas pada v10.0.0 menghapus jalur surogat implicit-marker-map sebelumnya: pemanggil harus mengonstruksi renderer denganShadingResourceRegistryInterfaceagar objek tak langsung/ShadingType 4terdaftar terhadap subdirektori Shading-resource halaman (ISO 32000-2 §8.7.4.2 / §8.7.4.3). Pesan tersebut menyebutkan konteks pemanggil dan menunjuk ke catatan migrasi v9.x→v10.0. - Konteks.
getContext()mengembalikancontext(label konteks-pemanggil singkat, mis.ConicGradientRenderer::render). - Pemulihan. Tindakan pemanggil-pustaka: pasangkan instance registri Shading-resource
ke dalam konstruktor renderer sebelum memanggil
render().
Linearisasi (Fast Web View)
Bagian berjudul “Linearisasi (Fast Web View)”LinearizationInvariantException
Bagian berjudul “LinearizationInvariantException”- Kapan dilemparkan. Ketika
Linearizertiga-lintasan v2 mendeteksi bahwa asersi MEASURE → PLACE → FILL miliknya dilanggar: jumlah byte Pass 3 yang tidak cocok dengan panjang berkas terprediksi Pass 1 (offset drift), placeholder kamus linearisasi yang terlalu kecil untuk lebar yang diserialisasi, atau offset hint-stream/H [offset length]yang tidak cocok dengan keluaran akhir. Memunculkan ini alih-alih memancarkan PDF yang rusak adalah jaminan keamanan yang dinyatakan. - Konteks.
getContext()mengembalikaninvariant(nama invarian yang dilanggar),expected,actual, dandelta(selisih bertanda). Getter bertipe:getInvariant(),getExpectedValue(),getActualValue(). - Pemulihan. Tindakan pemelihara: ajukan laporan bug — invarian ini seharusnya berlaku untuk semua masukan yang terbentuk dengan baik. Tangkap eksepsi sebelumnya yang terangkai.
LinearizationUnimplementedException
Bagian berjudul “LinearizationUnimplementedException”- Kapan dilemparkan. Ketika feature flag linearizer disetel ke backend
yang sengaja dinonaktifkan. Saat ini dimunculkan hanya untuk
linearizerVersion === 'v1-noop', setelan penurunan-darurat yang menolak semua upaya linearisasi pada saat runtime tanpa perubahan kode atau redeploy — berguna untuk kill-switching Fast Web View di produksi. - Konteks.
getContext()mengembalikanreason(penjelasan singkat yang dapat dibaca manusia). Getter bertipe:getReason(). - Pemulihan. Tindakan operator / rekayasa-rilis: sesuaikan konfigurasi atau mutakhirkan ke versi backend yang diperbaiki.
Invarian konformansi dan profil
Bagian berjudul “Invarian konformansi dan profil”ConformanceViolationException
Bagian berjudul “ConformanceViolationException”- Kapan dilemparkan. Ketika fitur yang diminta tidak dapat dipancarkan tanpa
melanggar kontrak konformansi ISO yang dideklarasikan dokumen, dan mesin
gagal-tertutup alih-alih menulis objek yang tidak konforman. Pemicu kanonisnya
adalah anotasi multimedia
Screenatau aksiRendition(ISO 32000-2:2020 §12.5.6.18 / §13.2) di bawah profil arsip PDF/A, yang dilarang setiap bagian PDF/A (seri ISO 19005) — berkas tersebut akan gagal validasi veraPDF, sehingga mesin menolak sejak awal. - Konteks.
getContext()mengembalikanconformance_mode(mode yang dideklarasikan, mis.pdfa4) danfeature(fitur yang ditolak, mis.Screen annotation). Keduanya adalah properti readonly publik. Alasannya adalah pesan eksepsi. - Pemulihan. Tindakan pengembang: hilangkan panggilan multimedia untuk keluaran arsip,
atau targetkan profil konformansi non-arsip (bawaan
ConformanceMode::Plain).
PdfRViolationException
Bagian berjudul “PdfRViolationException”- Kapan dilemparkan. Ketika invarian konformansi PDF/R-1 (ISO 23504-1:2020)
dilanggar, baik pada konstruksi objek nilai (profil
PdfRStrip,PdfRPage,PdfRDocument) maupun pada saat validator (PdfRValidator). Eksepsi ini menangkap klausul normatif yang bermasalah dan deskripsi pelanggaran satu baris sehingga konsumen audit dapat merutekan temuan ke sub-klausul §6 yang benar tanpa mengurai teks bebas. - Konteks.
getContext()mengembalikanstandard(selaluISO 23504-1:2020),clause(jalur klausul, mis.6.6.1), danviolation. Getter bertipe:getClause(),getViolation(). - Pemulihan. Tindakan pengembang: perbaiki masukan yang ditolak atau bangun ulang dokumen agar konforman dengan klausul yang dikutip.
Pembuatan barcode
Bagian berjudul “Pembuatan barcode”BarcodeException
Bagian berjudul “BarcodeException”- Kapan dilemparkan. Ketika pembuatan barcode gagal akibat data tidak valid atau
kesalahan pengkodean di seluruh simbologi yang didukung (Code 39/128, UPC-A/E,
EAN-8/13, Interleaved/Standard 2-of-5, POSTNET, PLANET, MSI, ISBN, ISSN, QR
Code, PDF417, DataMatrix, JabCode), serta kegagalan rendering GD selama pembuatan
gambar. Nilai barcode dibatasi-kutipan hingga 128 byte dalam pesan dan
konteks — payload yang terlalu panjang atau biner disimpan terpangkas dengan penanda
... (<N> bytes, truncated)agar tidak dapat disalin utuh ke log. - Konteks.
getContext()mengembalikanbarcode_type(simbologi, mis.QRCODE,EAN13,CODE128) danvalue(nilai yang dipangkas). Getter bertipe:getBarcodeType(),getValue(). - Pemulihan. Tindakan pengembang: perbaiki data barcode atau pemilihan simbologi.
BarcodeEncoderNotFoundException
Bagian berjudul “BarcodeEncoderNotFoundException”- Kapan dilemparkan. Dari
BarcodeEncoderRegistryketika tipe encoder yang diminta tidak dikenal atau gerbang kapabilitasnya tertutup. Eksepsi ini juga mengimplementasikan PSR-11Psr\Container\NotFoundExceptionInterface, sehingga registri tersebut merupakan kontainer yang konforman-standar. Pesan tersebut menyebutkan simbologi dan alasannya. - Konteks. Tidak menimpa
getContext(), sehingga mengembalikan array kosong.typedanreasontersedia melalui gettergetType()dangetReason()serta dalam pesan. - Pemulihan. Tindakan pengembang: daftarkan encoder, atau pasang paket
yang menyediakannya (misalnya
nextpdf/prountuk Micro QR / DotCode / HanXin / JabCode).
Kriptografi, enkripsi, dan tanda tangan
Bagian berjudul “Kriptografi, enkripsi, dan tanda tangan”EncryptionException
Bagian berjudul “EncryptionException”- Kapan dilemparkan. Ketika enkripsi atau dekripsi PDF gagal: kegagalan enkripsi/dekripsi AES-256-CBC, kesalahan OpenSSL, ukuran IV tidak valid, kegagalan komputasi-hash, dan kesalahan komputasi-nilai UE/OE. Biasanya berupa ekstensi OpenSSL yang hilang atau salah konfigurasi, materi kunci tidak valid, atau data terenkripsi yang rusak. Pesan tersebut menyebutkan operasi dan algoritmenya.
- Konteks.
getContext()mengembalikanalgorithm(mis.AES-256-CBC) danoperation(mis.encrypt,decrypt,key_derivation). Getter bertipe:getAlgorithm(),getOperation(). - Pemulihan. Tindakan infrastruktur: pastikan OpenSSL tersedia dan terkonfigurasi dengan benar. Lihat Enkripsi dan izin.
UnsupportedAlgorithmException
Bagian berjudul “UnsupportedAlgorithmException”- Kapan dilemparkan. Ketika algoritme kriptografi tidak dapat dieksekusi pada
runtime saat ini: ekstensi PHP yang dibutuhkan tidak tersedia, pustaka
pendukung tidak memiliki primitifnya, ekstensi
hashbawaan tidak dapat mensintesis varian SHAKE/XOF, atau algoritme tidak terdaftar diSignatureAlgorithmRegistry. Mesin tidak boleh terdegradasi secara senyap ke primitif yang lebih lemah, sehingga mesin memunculkan ini. Factory statisnonFipsHostUnderFipsProfile()memunculkannya (dengan pengenal algoritmeregulatory-profile:fips) ketikaRegulatoryProfile::FIPSdipilih tetapi penyedia OpenSSL yang tervalidasi-FIPS tidak dapat dikonfirmasi (baikFIPS_ABSENTmaupunINDETERMINATEgagal-tertutup). - Konteks.
getContext()mengembalikanalgorithm(nama atau OID, mis.shake256,Ed25519,AES-256-GCM) danreason(dapat ditindaklanjuti operator). Getter bertipe:getAlgorithm(),getReason(). - Pemulihan. Tindakan operator: pasang ekstensi yang hilang atau mutakhirkan
runtime; untuk gerbang FIPS, pasang build OpenSSL yang tervalidasi-FIPS atau setel
NEXTPDF_FIPS_MODEsecara eksplisit. Tindakan pengembang: daftarkan deskriptor algoritme kustom melaluiSignatureAlgorithmRegistry::register().
SignatureException
Bagian berjudul “SignatureException”- Kapan dilemparkan. Ketika operasi tanda tangan digital gagal: penanganan
sertifikat dan kunci privat (penguraian PKCS#12, pendekodean PEM/DER, validasi
X.509), konstruksi PKCS#7/CMS, format tanda tangan ECDSA, pelanggaran ukuran-kontainer,
pengkodean DER, dan orkestrasi PAdES. Kesalahan spesifik-TSA justru
dilaporkan oleh
TsaExceptionyang lebih spesifik. Utamakan factory bertipe yang dinamai dibanding konstruktor posisional; masing-masing mengikat akar penyebab ke ekor pesan. Contoh:ltvCapabilityMissing()(B-LT/B-LTA membutuhkannextpdf/enterprise),tsaRequired()/tsaUrlEmpty()/tsaEmptyToken(),httpClientMissing(),hsmSignerMissing()/hsmSignatureEmpty(),signatureContentsNotFound()/signatureContentsPaddingCorrupt(),unexpectedKeyType(),pemDecodingFailed(), keluarga Ed25519 (ed25519SignatureMalformed(),ed25519RoundTripVerifyFailed(),ed25519KeyParseFailed(),ed25519SeedInvalid(),ed25519SecretKeyMalformed(),ed25519PublicKeyInvalid()),documentTimestampNotEmitted(),algorithmPolicyRejected(),digestOnlyAlgorithmRefused(),encryptedLtvUnsupported(),incrementalUpdateWriterMissing(), serta pasangan status-OCSPnonSuccessfulOcspResponseStatus()/reservedOcspResponseStatus()(RFC 6960 §4.2.1). Factory ini gagal-tertutup alih-alih memancarkan tanda tangan yang diturunkan tingkatnya secara senyap. - Konteks.
getContext()mengembalikancert_info(subjek DN atau thumbprint, atau kosong),signature_level(tingkat PAdES yang diupayakan, mis.B-B,B-T,B-LT,B-LTA), dandetail(diagnostik yang dapat ditindaklanjuti, kosong untuk konstruktor posisional lawas). Getter bertipe:getCertInfo(),getSignatureLevel(),getDetail(). - Pemulihan. Tindakan pengembang: perbaiki konfigurasi sertifikat/kunci. Untuk factory yang kekurangan kapabilitas, pasang paket yang disebut. Lihat Kegagalan tanda tangan dan stempel waktu untuk entri gejala-dan-solusi per factory.
BlackPointCompensationUnsupportedException
Bagian berjudul “BlackPointCompensationUnsupportedException”- Kapan dilemparkan. Dari
NullBlackPointCompensationTransform::transform()ketika sebuah pemanggil meminta adaptor null untuk menerapkan transform kompensasi black-point ISO 18619 non-Default. Adaptor null adalah fallback aman untuk lingkungan tanpa backend manajemen-warna; menghasilkan sampel yang ditransformasi tanpa modul manajemen-warna sebenarnya akan salah melaporkan konversi secara senyap. Tidak seperti sebagian besar entri di sini, eksepsi ini memperluas\RuntimeExceptionsecara langsung, bukanNextPdfException, sehingga jalurcatch (\RuntimeException)yang sudah ada tetap berfungsi. - Konteks. Tidak ada
getContext(); ini adalah\RuntimeExceptionpolos. Detailnya ada di pesan. - Pemulihan. Tindakan pengembang: daftarkan sebuah
BlackPointCompensationTransformsungguhan (LittleCMS, Argyll, PHP murni), atau batasi/UseBlackPtCompkeBlackPointCompensation::Default.
Perakitan dokumen dan aksesibilitas
Bagian berjudul “Perakitan dokumen dan aksesibilitas”UnsupportedSourceDocumentException
Bagian berjudul “UnsupportedSourceDocumentException”- Kapan dilemparkan. Ketika sebuah dokumen sumber tidak dapat disalin dengan aman ke
keluaran merge/split dan operasinya gagal-tertutup alih-alih memancarkan hasil yang rusak
atau terkompromi keamanan. Gunakan factory yang dinamai:
encrypted()(ISO 32000-2 §7.6 — konten tidak dapat disalin tanpa kunci),signed()(§12.8 — menyalin halaman akan membatalkan rentang byte tanda tangan),unsupportedStreamFilter()(filter yang tidak dapat di-round-trip oleh reader graf-objek),multipleInteractiveForms()(batasan terdokumentasi: lebih dari satu sumber membawa/AcroFormnon-kosong, §12.7), dansplitWithInteractiveForm()(batasan terdokumentasi: penyubsetan-halaman sumber bermuatan-form akan menelantarkan widget). Memperluas\RuntimeExceptionsecara langsung, bukanNextPdfException. - Konteks. Tidak ada
getContext(); ini adalah\RuntimeExceptionpolos. Penyebab dan nomor objek yang terdampak disebut dalam pesan. - Pemulihan. Tindakan pengembang: dekripsi sumber terlebih dahulu atau suplai kuncinya; untuk sumber yang ditandatangani, tandatangani setelah merge; untuk merge multi-form, ratakan atau hapus bidang form dari semua sumber kecuali satu; untuk split bermuatan-form, ratakan form sebelum split.
InvalidBcp47TagException
Bagian berjudul “InvalidBcp47TagException”- Kapan dilemparkan. Dari
Bcp47Validator::validate()ketika sebuah kandidat tag bahasa cacat format menurut ABNF RFC 5646 §2.1, atau gagal dalam pencarian registri kuratif. Spesifik-domain untuk BCP-47 / ISO 14289-2:2024 §8.4.4, berbeda dariInvalidConfigExceptionsehingga pemanggil di hilir batas aksesibilitas dapat menangkap tipe yang sempit. Pasangan predikatBcp47Validator::isWellFormed()/isValid()tetap menjadi permukaan nilai-balik yang kompatibel-mundur untuk pemanggil yang lebih memilih bercabang daripada eksepsi. - Konteks.
getContext()mengembalikantag(kandidat persis sebagaimana disuplai) danreason(kode penolakan yang stabil dan dapat dibaca mesin, mis.empty-string,well-formed-shape,unregistered-primary,duplicate-variant). Getter bertipe:getTag(),getReason(). - Pemulihan. Tindakan pengembang: perbaiki tag bahasa menjadi tag BCP-47 yang terbentuk dengan baik dan terdaftar. Lihat Font dan tagging.
FormFieldAccessibilityException
Bagian berjudul “FormFieldAccessibilityException”- Kapan dilemparkan. Ketika sebuah bidang form interaktif akan bergantung pada nama
aksesibel sintetis (bukan-disuplai-penulis) sementara menghasilkan dokumen PDF/UA dengan
penegakan nama-bidang-aksesibel yang ketat diaktifkan. Keluaran PDF/UA bawaan memancarkan
nama fallback sintetis ke
/Contentswidget agar sebuah bidang tidak pernah tanpa-nama; strict mode justru mewajibkan penulis menyuplai nama yang bermakna (sebuah tooltip, atau caption untuk push button tanpa-aksi) agar pengguna pembaca-layar mendapat deskripsi yang sebenarnya (ISO 14289-2:2024 §8.10.2). - Konteks. Tidak menimpa
getContext(), sehingga mengembalikan array kosong.$fieldIdadalah properti readonly publik; alasannya adalah pesan. - Pemulihan. Tindakan pengembang: suplai tooltip / nama aksesibel untuk bidang yang disebut sebelum menghasilkan dokumen PDF/UA ketat, atau nonaktifkan strict mode. Lihat Validasi PDF/A dan PDF/UA.
VendorExtensionRegistryConflictException
Bagian berjudul “VendorExtensionRegistryConflictException”- Kapan dilemparkan. Dari
VendorExtensionRegistry::register()ketika sebuah pemanggil mendaftarkan ulang prefiks vendor developer-extension PDF yang dikenal (ISO 32000-2:2020 §7.12.1) dengan deskripsi yang berbeda dari metadata yang sudah terdaftar. Deskriptor bersifat hanya-tambah dan terdeteksi-konflik; eksepsi bertipe ini menggantikan\RuntimeExceptiongenerik agar pemanggil dapat menangkap kelas spesifik ini. - Konteks.
getContext()mengembalikanprefix,existing_description, danattempted_description. Getter bertipe:getPrefix(),getExistingDescription(),getAttemptedDescription(). - Pemulihan. Tindakan pengembang: daftarkan prefiks dengan deskripsi yang sudah ada, atau gunakan prefiks yang berbeda; jangan menimpa metadata yang terdaftar.
Audit export
Bagian berjudul “Audit export”AuditExportException
Bagian berjudul “AuditExportException”- Kapan dilemparkan. Ketika perakitan bundel audit-export, pembuatan matriks-keterlacakan,
atau proyeksi skema gagal pada saat runtime. Mencakup I/O terhadap
claims.json/manifest.json, encode/decode JSON bundel kanonis, dan ketidakcocokan versi-skema pada jalur kompatibilitas-mundurAuditExporter::projectToV1(). Pesan tersebut menyebutkan tahap, artefak saat diketahui, dan detailnya. - Konteks.
getContext()mengembalikanstage(mis.read_claims,encode_bundle,project_v1),detail, danartefact(jalur atau schema_version yang memicu kegagalan). Getter bertipe:getStage(),getDetail(),getArtefact(). - Pemulihan. Tindakan kepatuhan / DevOps: verifikasi jalur artefak masukan,
hasilkan ulang
claims.jsondari proses yang bersih, atau bangun ulang manifest sebelum mencoba ekspor kembali.
Objek nilai pelanggaran
Bagian berjudul “Objek nilai pelanggaran”Ini bukan eksepsi. Ini adalah objek nilai yang tidak dapat diubah yang dikembalikan mesin untuk
menggambarkan satu pelanggaran individual; keduanya tidak membawa getContext().
ComplianceViolation
Bagian berjudul “ComplianceViolation”- Apa ini. Objek nilai
final readonlyyang merepresentasikan satu kegagalan aturan yang dilaporkan oleh validator eksternal (veraPDF atau setara), termasuk referensi klausul ISO dan lokasinya dalam struktur PDF. - Bidang. Properti readonly publik:
ruleId(pengenal aturan validator, mis.6.1.2-1),clause(referensi klausul ISO, mis.ISO 19005-1:2005, 6.1.2),severity(mis.error,warning),location(jalur objek dalam struktur PDF), danmessage(deskripsi yang dapat dibaca manusia). - Penggunaan. Periksa koleksi yang dikembalikan oleh validator kepatuhan; rutekan atau
tampilkan setiap entri berdasarkan
severitydanclause. Lihat Validasi PDF/A dan PDF/UA.
RuleViolation
Bagian berjudul “RuleViolation”- Apa ini. Objek nilai
final readonlyyang merepresentasikan satu pelanggaran aturan-bisnis Schematron / EN 16931, yang dikembalikan olehSchematronRunnerInterface::runRules()dan diagregasikan di dalamValidationResult::$ruleViolations. Stabilitasnya eksperimental. - Bidang. Properti readonly publik:
ruleId(pengenal EN 16931 sepertiBR-{n},BR-CO-{n},BR-CL-{n},BR-DEC-{n}, atau pack spesifik-tier),severity(sebuah enumRuleSeverity),message(teks aturan, en-GB),xpath(XPath ke dalam XML yang disematkan,nulluntuk aturan tingkat-dokumen), dansemanticPath(jalur BG/BT notasi-titik sepertiBG-22.BT-106,nulluntuk pelanggaran struktural). - Penggunaan. Periksa koleksi pada hasil validasi; rutekan atau tampilkan setiap
entri berdasarkan
severity,ruleId, dan pelokasinya.