Core- und allgemeine Fehler
Geltungsbereich
Abschnitt betitelt „Geltungsbereich“Diese Einträge decken die Core- und allzweck-Exceptions ab, die NextPDF auslöst.
Die meisten erweitern die Basis NextPdfException, die selbst
\RuntimeException erweitert und ContextAwareExceptionInterface implementiert. Diese
Schnittstelle stellt eine Methode bereit, getContext(): array, die eine flache
snake_case-Map aus Primitiven zurückgibt, die sicher in eine Log- oder APM-Payload serialisiert werden kann.
Fangen Sie die NextPdfException-Familie mit einem einzigen catch (NextPdfException $e) ab.
Fügen Sie zusätzlich ein catch (\RuntimeException $e) hinzu, um die wenigen Low-Level-Fehler in
diesem Satz abzudecken, die \RuntimeException direkt erweitern (unten aufgeführt). Die Basis
NextPdfException::getContext() gibt ein leeres Array zurück; Unterklassen überschreiben es,
um Domänenfelder hinzuzufügen. Wo eine Klasse getContext() nicht überschreibt, erbt
sie das leere Array, und das Diagnosedetail liegt stattdessen in der Meldung und den
typisierten Gettern.
Vier Typen in diesem Satz erweitern nicht NextPdfException:
BlackPointCompensationUnsupportedException und
UnsupportedSourceDocumentException erweitern \RuntimeException direkt
(fangen Sie sie als \RuntimeException ab), und ComplianceViolation und
RuleViolation sind Value Objects, keine Exceptions — sie sind hier dokumentiert,
weil sie die Fehler- und Verletzungsdaten modellieren, die die Engine zurückgibt.
Basis-Exception
Abschnitt betitelt „Basis-Exception“NextPdfException
Abschnitt betitelt „NextPdfException“- Was es ist.
abstract-Basis für die zentrale NextPDF-Exception-Familie über Core und seine Erweiterungspakete hinweg. Es erweitert\RuntimeExceptionund implementiertContextAwareExceptionInterface. Das Abfangen dieses einen Typs fängt dieNextPdfException-Familie ab; die wenigen Fehler, die\RuntimeExceptiondirekt erweitern (oben aufgeführt), benötigen zusätzlich ein\RuntimeException-catch. - Kontext. Die Basis
getContext()gibt ein leeres Array zurück. Unterklassen überschreiben es, um domänenspezifische Felder zurückzugeben. - Behebung. Wird nicht direkt ausgelöst. Verwenden Sie es als Catch-all-Typ; verzweigen Sie auf die konkrete Unterklasse für spezifische Behandlung.
Konfiguration und Feature-Gating
Abschnitt betitelt „Konfiguration und Feature-Gating“InvalidConfigException
Abschnitt betitelt „InvalidConfigException“- Wann sie ausgelöst wird. Wenn ein
Config-Wert oder eine Kombination von Werten ungültig ist — eine fehlende Pflichteinstellung, eine sich gegenseitig ausschließende Option oder ein Wert außerhalb seines zulässigen Bereichs. Dies signalisiert einen Entwicklerfehler: Der aufrufende Code hat eine Konfiguration übergeben, die vor einem erneuten Versuch korrigiert werden muss. Die Meldung nennt den Schlüssel, den erwarteten Typ oder Bereich sowie den tatsächlichen Debug-Typ des übergebenen Werts. - Kontext.
getContext()gibtconfig_key,given_valueundexpected_typezurück. Typisierte Getter:getConfigKey(),getGivenValue(),getExpectedType(). - Behebung. Entwicklermaßnahme: Korrigieren Sie den benannten Konfigurationsschlüssel auf einen Wert des erwarteten Typs oder Bereichs, bevor Sie NextPDF erneut aufrufen.
NotImplementedException
Abschnitt betitelt „NotImplementedException“- Wann sie ausgelöst wird. Wenn ein öffentlicher API-Einstiegspunkt erreicht wird, seine
Implementierung in der aktuellen Version aber absichtlich fehlt. Wird für
veraltete Shims verwendet, die existieren, um Pre-Bisect-Aufrufern einen lauten, umsetzbaren
Fehler statt eines stillen No-op zu liefern. Die Meldung kombiniert ein maschinell durchsuchbares
feature-Label und einefollowUp-Referenz (Defect-ID, Tracking-Anker oder Sprint-Name). - Kontext. Überschreibt
getContext()nicht, gibt also ein leeres Array zurück. Die Werte$featureund$followUpsind öffentliche readonly-Eigenschaften und sind in die Meldung eingebettet. - Behebung. Maßnahme des Bibliotheksaufrufers: Entfernen Sie den Aufruf, oder pinnen Sie auf eine künftige Version, die den benannten Follow-up bringt.
IncompatibleFeatureFlagsException
Abschnitt betitelt „IncompatibleFeatureFlagsException“- Wann sie ausgelöst wird. Zur
Config-Build-Zeit (Config::validate()), wenn eineCssFeatureFlags-Kombination intern inkonsistent ist — ein Flag setzt ein anderes voraus, das deaktiviert ist. Die einzige heute verbotene Kombination istlayoutSubgrid = truemitlayoutGrid = false: Eine als Subgrid ausgelegte Achse leitet ihre Gitterlinien von einem übergeordneten Grid-Container ab (CSS Grid Layout Module Level 2 §1), sodass Subgrid ohne Grid ein Gitter beschreibt, das nicht existieren kann. Die Prüfung läuft gegen aufgelöste Flags, sodassCssRenderingMode::Safe(das jedes Phase-4+-Feature ausschaltet) die Kombination maskiert, statt sie auszulösen. ErweitertStrictModeViolation. - Kontext.
getContext()führt die übergeordneten Strict-Modus-Felder (cssDeviation,excId,chunkSha256,location) mit den BooleanslayoutGridundlayoutSubgridzusammen. DaslocationistConfig::validate(), undcssDeviationkodiert das Flag-Paar. - Behebung. Maßnahme des Bibliotheksaufrufers: Aktivieren Sie
layoutGridzusammen mitlayoutSubgrid, oder deaktivieren SielayoutSubgrid.
IncompatibleRenderingModeException
Abschnitt betitelt „IncompatibleRenderingModeException“- Wann sie ausgelöst wird. Zur
Config-Build-Zeit, wenn eine Paarung ausCssRenderingModeundCssLayoutModeaußerhalb der kompatiblen Zellen der Modus-Matrix fällt. Die einzige heute verbotene Paarung istCssRenderingMode::Safe+CssLayoutMode::Retained— Safe schaltet jedes Phase-4+-Feature aus und lässt damit Retained-Mode-Formatierungskontexte (Grid, Subgrid,@container) ohne Konsumenten zurück, sodass die Kombination abgelehnt statt stillschweigend herabgestuft wird. ErweitertStrictModeViolation. - Kontext.
getContext()führt die übergeordneten Strict-Modus-Felder mitmode1(dem Rendering-Modus-Wert) undmode2(dem Layout-Modus-Wert) zusammen. DascssDeviationkodiert das Modus-Paar;locationistConfig::validate(). - Behebung. Maßnahme des Bibliotheksaufrufers: Wählen Sie
Safe+Streamingfür ein Rollback, oder einen Nicht-Safe-Rendering-Modus (Normal/Strict/Audit) mitRetainedfür Grid / Subgrid / Container Queries.
StrictModeViolation
Abschnitt betitelt „StrictModeViolation“- Wann sie ausgelöst wird.
abstract-Basis für jede Spezifikationsabweichungs-Exception, die unterCssRenderingMode::Strictausgelöst wird. Im Strict-Modus löst jede erkannte CSS-Abweichung, die nicht mit einem registriertenEXC-NNN-Exception-Eintrag verknüpft ist, am Erkennungspunkt eine Instanz dieser Klasse (oder einer Unterklasse) aus. Wird nicht direkt ausgelöst; sieheIncompatibleFeatureFlagsExceptionundIncompatibleRenderingModeException. - Kontext.
getContext()gibt die vier ADR-023-Felder zurück:cssDeviation(Kurzlabel für das abweichende Konstrukt),excId(Registry-Bezeichner, wenn registriert, sonstnull),chunkSha256(Chunk-Hash der Spezifikationszitierung, wenn bekannt, sonstnull) undlocation(für den Aufrufer lesbarer Ursprung, sonstnull). - Behebung. Maßnahme des Bibliotheksaufrufers: Registrieren Sie die Abweichung als neuen
freigegebenen
EXC-NNN-Eintrag, oder korrigieren Sie den Renderer, um die Abweichung zu entfernen.
HTML- und CSS-Eingabe
Abschnitt betitelt „HTML- und CSS-Eingabe“HtmlParsingException
Abschnitt betitelt „HtmlParsingException“- Wann sie ausgelöst wird. Wenn das Parsen der HTML-Eingabe oder die DOM-Konstruktion fehlschlägt:
ungültige Charset-Deklarationen, Verletzungen des Eingabegrößenlimits, übermäßige Verschachtelungstiefe,
Element-Count-Überläufe und Tabellenstrukturfehler wie ein Zeilenanzahl-Maximum.
CSS-spezifische Ressourcenerschöpfung wird stattdessen von
CssParserLimitExceededExceptionundCssResolutionBudgetExceededExceptiongemeldet. - Kontext.
getContext()gibthtml_snippet(einen kurzen, gekürzten Auszug des fehlerverursachenden HTML),position(Byte-Offset, oder-1, wenn unbekannt) undrule(die verletzte Parser-Beschränkung) zurück. Typisierte Getter:getHtmlSnippet(),getPosition(),getRule(). - Behebung. Entwicklermaßnahme: Vereinfachen Sie die HTML-Eingabe oder passen Sie die Parser-Limits an.
CssParserLimitExceededException
Abschnitt betitelt „CssParserLimitExceededException“- Wann sie ausgelöst wird. Wenn die CSS-Eingabe ein konfiguriertes Parser-Sicherheitslimit
überschreitet. Zwei Kategorien werden über die benannten Konstruktoren abgedeckt:
forByteLimit()(Stylesheet zu groß für sichere Regex-Verarbeitung) undforNestingDepth()(CSS-Verschachtelungsrekursion zu tief). Beide Meldungen nennen den tatsächlichen Wert und das Limit. - Kontext.
getContext()gibtlimit_type(byteodernesting_depth),actualundlimitzurück. - Behebung. Entwicklermaßnahme: Teilen Sie das Stylesheet in kleinere Sheets auf, oder reduzieren Sie die Verschachtelungstiefe, oder erhöhen Sie das konfigurierte Limit.
CssResolutionBudgetExceededException
Abschnitt betitelt „CssResolutionBudgetExceededException“- Wann sie ausgelöst wird. Wenn die CSS-
:has()-Auflösung ihr Traversal-Budget überschreitet. Der zweistufige:has()-Resolver erzwingt ein striktes Node-Visit-Budget, um zu verhindern, dass pathologische Selektoren quadratische Dokumentdurchläufe verursachen; sobald die Gesamtbesuchszahl das Limit überschreitet, wird das Stylesheet als zu komplex abgelehnt. Die Meldung nennt die Besuchszahl und das Budget. - Kontext.
getContext()gibtvisitsundbudgetzurück. Typisierte Getter:getVisits(),getBudget(). - Behebung. Entwicklermaßnahme: Reduzieren Sie die Selektorkomplexität, oder erhöhen Sie das konfigurierte Budget.
Schriften und Bilder
Abschnitt betitelt „Schriften und Bilder“FontNotFoundException
Abschnitt betitelt „FontNotFoundException“- Wann sie ausgelöst wird. Wenn eine Schriftdatei auf Dateisystemebene nicht gefunden oder gelesen werden kann: Die angeforderte Familie oder der Pfad existiert nicht, ist nicht lesbar, oder das konfigurierte Schriftenverzeichnis ist nicht zugänglich. Die Schriftdaten können gültig sein — dies signalisiert nur, dass sie nicht erreicht werden können. Die Meldung listet die durchsuchten Pfade auf.
- Kontext.
getContext()gibtfont_name,search_paths(eine Liste) undfallback_attempted(ein Bool) zurück. Typisierte Getter:getFontName(),getSearchPaths(),wasFallbackAttempted(). - Behebung. Entwicklermaßnahme: Prüfen Sie den Schriftpfad. Infrastrukturmaßnahme: Korrigieren Sie die Dateiberechtigungen für die Schriftdatei oder das Verzeichnis.
FontParsingException
Abschnitt betitelt „FontParsingException“- Wann sie ausgelöst wird. Wenn eine Schriftdatei gefunden wird, ihr Inhalt aber nicht
nutzbar ist: Sie ist beschädigt, in einem nicht unterstützten Format oder es fehlen erforderliche Tabellen.
Deckt strukturelle Validierungsfehler beim TrueType-, Type-1-, CFF- und
OpenType-Parsen ab — abgeschnittene Header, ungültige Tabellenverzeichnisse, fehlende
Pflichttabellen (
head,hhea,OS/2), Entpackfehler und Größen- verletzungen. Die Meldung nennt die Datei und den Parse-Fehler. - Kontext.
getContext()gibtfont_fileundparse_errorzurück. Typisierte Getter:getFontFile(),getParseError(). - Behebung. Entwicklermaßnahme: Ersetzen Sie die Schriftdatei durch eine gültige.
ImageProcessingException
Abschnitt betitelt „ImageProcessingException“- Wann sie ausgelöst wird. Wenn ein Bild nicht dekodiert werden kann, in einem nicht unterstützten Format vorliegt oder die GD/Imagick-Verarbeitung fehlschlägt: unkenntliche Magic Bytes, beschädigte JPEG-Daten, nicht unterstützte MIME-Typen, Verletzungen des Dateigrößenlimits und GD-Ressourcen- zuteilungsfehler. Das Bild war zugänglich, aber seine Pixeldaten konnten nicht zum Einbetten extrahiert werden.
- Kontext.
getContext()gibtimage_path(leer bei Inline-Daten),format(erkannt oder erwartet, z. B.jpeg,png,unknown) undoperation(z. B.decode,resize,embed) zurück. Typisierte Getter:getImagePath(),getFormat(),getOperation(). - Behebung. Entwicklermaßnahme: Liefern Sie eine gültige, unterstützte Bilddatei.
Ausgabe, Layout und Serialisierung
Abschnitt betitelt „Ausgabe, Layout und Serialisierung“CompressionException
Abschnitt betitelt „CompressionException“- Wann sie ausgelöst wird. Wenn die FlateDecode-(zlib-)Komprimierung oder -Dekomprimierung
fehlschlägt —
gzcompress/gzuncompress-Fehler bei Content-Streams, Schriftdaten, Seiteninhalt, Anhangsdaten und Cross-Reference-Streams. Typischerweise ein beschädigter Eingabestream, unzureichender Speicher oder eine fehlende zlib-Erweiterung. - Kontext.
getContext()gibtalgorithm(Filtername, z. B.FlateDecode,LZWDecode) undstream_length(Byte-Länge, oder-1, wenn unbekannt) zurück. Typisierte Getter:getAlgorithm(),getStreamLength(). - Behebung. Infrastrukturmaßnahme: Stellen Sie sicher, dass
ext-zlibgeladen und der Speicher ausreichend ist.
WriterException
Abschnitt betitelt „WriterException“- Wann sie ausgelöst wird. Wenn die PDF-Serialisierung, Linearisierung oder I/O-Ausgabe
fehlschlägt:
PdfWriter-Stream-Schreibfehler, Korruption der Cross-Reference-Tabelle, Header-/Trailer-Generierungsfehler, Fehler beim Auflösen von Objektreferenzen, Datei- schreibfehler und Ausgabepuffer-Überläufe. Ein gültiges In-Memory-Dokument konnte nicht in einen gültigen Byte-Stream serialisiert werden. Die Meldung nennt die Stufe. - Kontext.
getContext()gibtoutput_path(leer bei String-Ausgabe) undwriter_state(die Stufe, z. B.header,body,xref,trailer) zurück. Typisierte Getter:getOutputPath(),getWriterState(). - Behebung. Infrastrukturmaßnahme: Prüfen Sie Speicherplatz, Dateiberechtigungen und den Ausgabestream.
PageLayoutException
Abschnitt betitelt „PageLayoutException“- Wann sie ausgelöst wird. Wenn Seitenlayout-Beschränkungen nicht erfüllt werden können: Spaltenlayout-Verletzungen (unzureichende Breite, ungültige Spaltenzahl), Inhalts- überlauf über die Seitengrenzen hinaus und Randkonflikte. Das angeforderte Layout ist für die gegebenen Seitenabmessungen und den Inhalt geometrisch unmöglich. Die Meldung nennt die Seitennummer, wenn bekannt, und die verletzte Beschränkung.
- Kontext.
getContext()gibtpage_number(einsbasiert, oder0, wenn unbekannt) undconstraintzurück. Typisierte Getter:getPageNumber(),getConstraint(). - Behebung. Entwicklermaßnahme: Passen Sie Seitengröße, Ränder, Spalteneinstellungen oder Inhalt an.
TemplateException
Abschnitt betitelt „TemplateException“- Wann sie ausgelöst wird. Wenn ein PDF-Template-Import oder eine Wiederverwendung im
TemplateManagerfehlschlägt: ungültige Template-Zustandsübergänge (Beginnen oder Beenden von Templates außerhalb der Reihenfolge), Verweis auf ein nicht existierendes Template und Stream- Komprimierungsfehler bei der Template-Serialisierung. Die Meldung nennt die Operation und die Template-ID, sofern zugewiesen. - Kontext.
getContext()gibttemplate_id(leer, wenn noch nicht zugewiesen) undoperation(z. B.begin,end,use,serialize) zurück. Typisierte Getter:getTemplateId(),getOperation(). - Behebung. Entwicklermaßnahme: Korrigieren Sie die Reihenfolge der Template-Nutzung oder das Quell-PDF.
Content-Stream-Invarianten
Abschnitt betitelt „Content-Stream-Invarianten“ContentStreamBalanceException
Abschnitt betitelt „ContentStreamBalanceException“- Wann sie ausgelöst wird. Wenn ein
ContentStreamBuilderein unausgewogenes Operatorpaar beim Stream-Schließen (oder mitten im Stream, wenn Invarianten eager geprüft werden) erkennt. Es erfasst die Tiefenzähler, die die Ausgleichsinvariante verletzt haben, sodass das Logging identifizieren kann, welcher Emitter einq,BToderBMCohne sein passendesQ,EToderEMCdurchsickern ließ. Gemäß ISO 32000-2:2020 §8.4.2 (Grafikzustands- Stack), §9.4.1 (Textobjekte) und §14.6 (Marked Content). - Kontext.
getContext()gibtgraphics_depth,text_block_depth,marked_content_depthundoffending_operatorzurück. Typisierte Getter:getGraphicsDepth(),getTextBlockDepth(),getMarkedContentDepth(),getOffendingOperator(). - Behebung. Entwicklermaßnahme: Lokalisieren Sie den Emitter, der ein Konstrukt geöffnet hat, ohne es zu schließen.
GraphicsStateBalanceException
Abschnitt betitelt „GraphicsStateBalanceException“- Wann sie ausgelöst wird. Wenn ein PDF-Content-Stream mit unausgewogenen
q/Q- Operatoren schließt. ISO 32000-2:2020 §8.4.2 verlangt, dass jedes Grafikzustands-Save (q) durch genau ein Restore (Q) vor dem Stream-Ende ausgeglichen wird; eine Unwucht lässt Transformation, Clipping-Pfad, Farben und Rendering Intent in nachfolgende Seiten oder Form-XObjects durchsickern. Wird nur ausgelöst, wenn die strikte Grafikzustands- Prüfung aktiviert ist (NEXTPDF_GFXSTATE_STRICT=1); im entspannten Modus wird stattdessen eine Warnung übertrigger_error()ausgegeben. - Kontext.
getContext()gibtsave_depthzurück (positiv bei zu vielen Saves, negativ bei zu vielen Restores). Typisierter Getter:getSaveDepth(). - Behebung. Entwicklermaßnahme: Lokalisieren Sie das nicht ausgeglichene
save()/restore()- Paar.
MissingShadingResourceException
Abschnitt betitelt „MissingShadingResourceException“- Wann sie ausgelöst wird. Wenn
ConicGradientRenderer::render()ohne einen Shading-Resource-Registry-Kontext aufgerufen wird. Die Breaking Change in v10.0.0 entfernte den vorherigen impliziten Marker-Map-Surrogatpfad: Aufrufer müssen den Renderer mit einemShadingResourceRegistryInterfacekonstruieren, damit das/ShadingType 4- indirekte Objekt gegen das Shading-Resource-Subdictionary der Seite registriert wird (ISO 32000-2 §8.7.4.2 / §8.7.4.3). Die Meldung nennt den Aufrufer- kontext und verweist auf den Migrationshinweis v9.x→v10.0. - Kontext.
getContext()gibtcontext(ein kurzes Aufrufer-Kontext-Label, z. B.ConicGradientRenderer::render) zurück. - Behebung. Maßnahme des Bibliotheksaufrufers: Binden Sie eine Shading-Resource-Registry-Instanz
in den Renderer-Konstruktor ein, bevor Sie
render()aufrufen.
Linearisierung (Fast Web View)
Abschnitt betitelt „Linearisierung (Fast Web View)“LinearizationInvariantException
Abschnitt betitelt „LinearizationInvariantException“- Wann sie ausgelöst wird. Wenn der dreistufige v2-
Linearizererkennt, dass seine MEASURE → PLACE → FILL-Zusicherungen verletzt wurden: eine Pass-3-Byte-Zahl, die nicht mit der in Pass 1 vorhergesagten Dateilänge übereinstimmt (Offset-Drift), ein Linearisierungs- Dictionary-Platzhalter, der für die serialisierte Breite zu klein ist, oder ein/H [offset length]-Hint-Stream-Offset, der nicht mit der endgültigen Ausgabe übereinstimmt. Dies zutage zu fördern statt ein kaputtes PDF auszugeben, ist eine erklärte Sicherheitsgarantie. - Kontext.
getContext()gibtinvariant(den Namen der verletzten Invariante),expected,actualunddelta(die vorzeichenbehaftete Differenz) zurück. Typisierte Getter:getInvariant(),getExpectedValue(),getActualValue(). - Behebung. Maintainer-Maßnahme: Reichen Sie einen Fehlerbericht ein — diese Invarianten sollten für alle wohlgeformten Eingaben gelten. Erfassen Sie die verkettete vorherige Exception.
LinearizationUnimplementedException
Abschnitt betitelt „LinearizationUnimplementedException“- Wann sie ausgelöst wird. Wenn das Linearizer-Feature-Flag auf ein Backend
gesetzt ist, das absichtlich deaktiviert ist. Derzeit nur ausgelöst für
linearizerVersion === 'v1-noop', die Notfall-Downgrade-Einstellung, die alle Linearisierungsversuche zur Laufzeit ohne Codeänderung oder Redeploy ablehnt — nützlich, um Fast Web View in der Produktion per Kill-Switch zu deaktivieren. - Kontext.
getContext()gibtreason(eine kurze, menschenlesbare Erklärung) zurück. Typisierter Getter:getReason(). - Behebung. Maßnahme von Betrieb / Release-Engineering: Passen Sie die Konfiguration an oder aktualisieren Sie auf eine korrigierte Backend-Version.
Konformitäts- und Profil-Invarianten
Abschnitt betitelt „Konformitäts- und Profil-Invarianten“ConformanceViolationException
Abschnitt betitelt „ConformanceViolationException“- Wann sie ausgelöst wird. Wenn ein angefordertes Feature nicht ausgegeben werden kann, ohne
den deklarierten ISO-Konformitätsvertrag des Dokuments zu brechen, und die Engine
fail-closed reagiert, statt ein nicht konformes Objekt zu schreiben. Der kanonische Auslöser
ist eine Multimedia-
Screen-Annotation oderRendition-Action (ISO 32000-2:2020 §12.5.6.18 / §13.2) unter einem PDF/A-Archivprofil, was jeder PDF/A-Teil verbietet (ISO-19005-Serie) — die Datei würde die veraPDF-Validierung nicht bestehen, daher verweigert die Engine dies vorab. - Kontext.
getContext()gibtconformance_mode(den deklarierten Modus, z. B.pdfa4) undfeature(das abgelehnte Feature, z. B.Screen annotation) zurück. Beide sind öffentliche readonly-Eigenschaften. Der Grund ist die Exception-Meldung. - Behebung. Entwicklermaßnahme: Lassen Sie den Multimedia-Aufruf für Archivausgaben weg,
oder zielen Sie auf ein Nicht-Archiv-Konformitätsprofil (Standard
ConformanceMode::Plain).
PdfRViolationException
Abschnitt betitelt „PdfRViolationException“- Wann sie ausgelöst wird. Wenn eine PDF/R-1-(ISO 23504-1:2020-)Konformitätsinvariante
verletzt wird, entweder bei der Value-Object-Konstruktion (die Profile
PdfRStrip,PdfRPage,PdfRDocument) oder zur Validator-Zeit (PdfRValidator). Es erfasst die betreffende normative Klausel und eine einzeilige Verletzungsbeschreibung, damit Audit- Konsumenten Befunde an die korrekte §6-Unterklausel routen können, ohne Freitext zu parsen. - Kontext.
getContext()gibtstandard(immerISO 23504-1:2020),clause(der Klauselpfad, z. B.6.6.1) undviolationzurück. Typisierte Getter:getClause(),getViolation(). - Behebung. Entwicklermaßnahme: Korrigieren Sie die abgelehnte Eingabe oder bauen Sie das Dokument neu auf, damit es der zitierten Klausel entspricht.
Barcode-Erzeugung
Abschnitt betitelt „Barcode-Erzeugung“BarcodeException
Abschnitt betitelt „BarcodeException“- Wann sie ausgelöst wird. Wenn die Barcode-Erzeugung aufgrund ungültiger Daten oder
Kodierungsfehler über alle unterstützten Symbologien hinweg fehlschlägt (Code 39/128, UPC-A/E,
EAN-8/13, Interleaved/Standard 2-of-5, POSTNET, PLANET, MSI, ISBN, ISSN, QR
Code, PDF417, DataMatrix, JabCode) sowie bei GD-Rendering-Fehlern während der Bild-
erstellung. Der Barcode-Wert wird in Meldung und Kontext auf 128 Byte gekappt —
überlange oder binäre Payloads werden gekürzt mit einem
... (<N> bytes, truncated)-Marker gespeichert, sodass sie nicht im Ganzen in ein Log kopiert werden können. - Kontext.
getContext()gibtbarcode_type(Symbologie, z. B.QRCODE,EAN13,CODE128) undvalue(den gekürzten Wert) zurück. Typisierte Getter:getBarcodeType(),getValue(). - Behebung. Entwicklermaßnahme: Korrigieren Sie die Barcode-Daten oder die Symbologie- auswahl.
BarcodeEncoderNotFoundException
Abschnitt betitelt „BarcodeEncoderNotFoundException“- Wann sie ausgelöst wird. Aus
BarcodeEncoderRegistry, wenn der angeforderte Encoder- Typ unbekannt ist oder sein Capability-Gate geschlossen ist. Es implementiert außerdem PSR-11Psr\Container\NotFoundExceptionInterface, sodass die Registry ein standardkonformer Container ist. Die Meldung nennt die Symbologie und den Grund. - Kontext. Überschreibt
getContext()nicht, gibt also ein leeres Array zurück. Dertypeund derreasonsind über die GettergetType()undgetReason()sowie in der Meldung verfügbar. - Behebung. Entwicklermaßnahme: Registrieren Sie den Encoder, oder installieren Sie das Paket,
das ihn bereitstellt (zum Beispiel
nextpdf/profür Micro QR / DotCode / HanXin / JabCode).
Kryptografie, Verschlüsselung und Signaturen
Abschnitt betitelt „Kryptografie, Verschlüsselung und Signaturen“EncryptionException
Abschnitt betitelt „EncryptionException“- Wann sie ausgelöst wird. Wenn die PDF-Verschlüsselung oder -Entschlüsselung fehlschlägt: AES-256-CBC- Ver-/Entschlüsselungsfehler, OpenSSL-Fehler, ungültige IV-Größen, Hash-Berechnungs- fehler und UE/OE-Wertberechnungsfehler. Typischerweise eine fehlende oder falsch konfigurierte OpenSSL-Erweiterung, ungültiges Schlüsselmaterial oder beschädigte verschlüsselte Daten. Die Meldung nennt die Operation und den Algorithmus.
- Kontext.
getContext()gibtalgorithm(z. B.AES-256-CBC) undoperation(z. B.encrypt,decrypt,key_derivation) zurück. Typisierte Getter:getAlgorithm(),getOperation(). - Behebung. Infrastrukturmaßnahme: Stellen Sie sicher, dass OpenSSL verfügbar und korrekt konfiguriert ist. Siehe Verschlüsselung und Berechtigungen.
UnsupportedAlgorithmException
Abschnitt betitelt „UnsupportedAlgorithmException“- Wann sie ausgelöst wird. Wenn ein kryptografischer Algorithmus in der
aktuellen Laufzeitumgebung nicht ausgeführt werden kann: Eine erforderliche PHP-Erweiterung ist nicht verfügbar, der zugrunde liegenden
Bibliothek fehlt das Primitive, die mitgelieferte
hash-Erweiterung kann keine SHAKE/XOF-Variante synthetisieren, oder der Algorithmus ist nicht in derSignatureAlgorithmRegistryregistriert. Die Engine darf nicht stillschweigend auf ein schwächeres Primitive herabstufen, daher fördert sie dies stattdessen zutage. Die statische FactorynonFipsHostUnderFipsProfile()löst sie aus (mit dem Algorithmusbezeichnerregulatory-profile:fips), wennRegulatoryProfile::FIPSgewählt wurde, aber ein FIPS-validierter OpenSSL-Provider nicht bestätigt werden kann (sowohlFIPS_ABSENTals auchINDETERMINATEreagieren fail-closed). - Kontext.
getContext()gibtalgorithm(Name oder OID, z. B.shake256,Ed25519,AES-256-GCM) undreason(für den Betrieb umsetzbar) zurück. Typisierte Getter:getAlgorithm(),getReason(). - Behebung. Betriebsmaßnahme: Installieren Sie die fehlende Erweiterung oder aktualisieren Sie die
Laufzeitumgebung; für das FIPS-Gate installieren Sie einen FIPS-validierten OpenSSL-Build oder setzen Sie
NEXTPDF_FIPS_MODEexplizit. Entwicklermaßnahme: Registrieren Sie einen benutzerdefinierten Algorithmus- Deskriptor überSignatureAlgorithmRegistry::register().
SignatureException
Abschnitt betitelt „SignatureException“- Wann sie ausgelöst wird. Wenn eine digitale Signaturoperation fehlschlägt: Zertifikats-
und Privatschlüssel-Handhabung (PKCS#12-Parsing, PEM/DER-Dekodierung, X.509-
Validierung), PKCS#7/CMS-Konstruktion, ECDSA-Signaturformat, Container-Größen-
verletzungen, DER-Kodierung und PAdES-Orchestrierung. TSA-spezifische Fehler werden
stattdessen vom spezifischeren
TsaExceptiongemeldet. Bevorzugen Sie die typisierten benannten Factorys gegenüber dem positionellen Konstruktor; jede bindet die Grundursache an das Meldungsende. Beispiele:ltvCapabilityMissing()(B-LT/B-LTA benötigtnextpdf/enterprise),tsaRequired()/tsaUrlEmpty()/tsaEmptyToken(),httpClientMissing(),hsmSignerMissing()/hsmSignatureEmpty(),signatureContentsNotFound()/signatureContentsPaddingCorrupt(),unexpectedKeyType(),pemDecodingFailed(), die Ed25519-Familie (ed25519SignatureMalformed(),ed25519RoundTripVerifyFailed(),ed25519KeyParseFailed(),ed25519SeedInvalid(),ed25519SecretKeyMalformed(),ed25519PublicKeyInvalid()),documentTimestampNotEmitted(),algorithmPolicyRejected(),digestOnlyAlgorithmRefused(),encryptedLtvUnsupported(),incrementalUpdateWriterMissing()und das OCSP-Status-PaarnonSuccessfulOcspResponseStatus()/reservedOcspResponseStatus()(RFC 6960 §4.2.1). Diese Factorys reagieren fail-closed, statt eine stillschweigend herabgestufte Signatur auszugeben. - Kontext.
getContext()gibtcert_info(Subject-DN oder Thumbprint, oder leer),signature_level(die versuchte PAdES-Stufe, z. B.B-B,B-T,B-LT,B-LTA) unddetail(die umsetzbare Diagnose, leer für den Legacy-positionellen Konstruktor) zurück. Typisierte Getter:getCertInfo(),getSignatureLevel(),getDetail(). - Behebung. Entwicklermaßnahme: Korrigieren Sie die Zertifikats-/Schlüsselkonfiguration. Für Capability-fehlende Factorys installieren Sie das benannte Paket. Siehe Signatur- und Zeitstempelfehler für Symptom-und-Lösung-Einträge pro Factory.
BlackPointCompensationUnsupportedException
Abschnitt betitelt „BlackPointCompensationUnsupportedException“- Wann sie ausgelöst wird. Aus
NullBlackPointCompensationTransform::transform(), wenn ein Aufrufer den Null-Adapter bittet, eine Nicht-Default-ISO-18619- Schwarzpunktkompensation anzuwenden. Der Null-Adapter ist der sichere Fallback für Umgebungen ohne Farbmanagement-Backend; ein transformiertes Sample ohne ein echtes Farbmanagement-Modul zu erzeugen, würde die Konvertierung stillschweigend falsch melden. Anders als die meisten Einträge hier erweitert dies\RuntimeExceptiondirekt, nichtNextPdfException, sodass bestehendecatch (\RuntimeException)-Pfade weiter funktionieren. - Kontext. Kein
getContext(); es ist eine einfache\RuntimeException. Das Detail steht in der Meldung. - Behebung. Entwicklermaßnahme: Registrieren Sie eine echte
BlackPointCompensationTransform(LittleCMS, Argyll, pure-PHP), oder beschränken Sie/UseBlackPtCompaufBlackPointCompensation::Default.
Dokumentzusammenstellung und Barrierefreiheit
Abschnitt betitelt „Dokumentzusammenstellung und Barrierefreiheit“UnsupportedSourceDocumentException
Abschnitt betitelt „UnsupportedSourceDocumentException“- Wann sie ausgelöst wird. Wenn ein Quelldokument nicht sicher in eine
Merge-/Split-Ausgabe kopiert werden kann und die Operation fail-closed fehlschlägt, statt ein beschädigtes
oder sicherheitskompromittiertes Ergebnis auszugeben. Verwenden Sie die benannten Factorys:
encrypted()(ISO 32000-2 §7.6 — Inhalt kann ohne den Schlüssel nicht kopiert werden),signed()(§12.8 — das Kopieren von Seiten würde den Signatur-Byte-Bereich ungültig machen),unsupportedStreamFilter()(ein Filter, den der Objektgraph-Reader nicht Roundtrip-fähig verarbeiten kann),multipleInteractiveForms()(eine dokumentierte Einschränkung: mehr als eine Quelle trägt ein nicht leeres/AcroForm, §12.7) undsplitWithInteractiveForm()(eine dokumentierte Einschränkung: das Teilseiten-Subsetting einer formulartragenden Quelle würde Widgets verwaisen lassen). Erweitert\RuntimeExceptiondirekt, nichtNextPdfException. - Kontext. Kein
getContext(); es ist eine einfache\RuntimeException. Die Ursache und die betroffene Objektnummer werden in der Meldung genannt. - Behebung. Entwicklermaßnahme: Entschlüsseln Sie die Quelle zuerst oder liefern Sie den Schlüssel; bei signierten Quellen signieren Sie stattdessen nach dem Zusammenführen; bei Multi-Form-Merges flachen oder entfernen Sie die Formularfelder aller Quellen bis auf eine; bei formulartragenden Splits flachen Sie das Formular vor dem Aufteilen.
InvalidBcp47TagException
Abschnitt betitelt „InvalidBcp47TagException“- Wann sie ausgelöst wird. Aus
Bcp47Validator::validate(), wenn ein kandidierender Sprach-Tag unter RFC 5646 §2.1 ABNF fehlgeformt ist oder die kuratierte Registry-Suche nicht besteht. Domänenspezifisch für BCP-47 / ISO 14289-2:2024 §8.4.4, getrennt vonInvalidConfigException, damit Aufrufer hinter der Barrierefreiheits-Naht einen schmalen Typ abfangen können. Das PrädikatpaarBcp47Validator::isWellFormed()/isValid()bleibt die rückwärtskompatible Rückgabewert-Oberfläche für Aufrufer, die Verzweigung gegenüber Exceptions bevorzugen. - Kontext.
getContext()gibttag(den Kandidaten exakt wie übergeben) undreason(einen stabilen, maschinenlesbaren Ablehnungscode, z. B.empty-string,well-formed-shape,unregistered-primary,duplicate-variant) zurück. Typisierte Getter:getTag(),getReason(). - Behebung. Entwicklermaßnahme: Korrigieren Sie den Sprach-Tag zu einem wohlgeformten, registrierten BCP-47-Tag. Siehe Schriften und Tagging.
FormFieldAccessibilityException
Abschnitt betitelt „FormFieldAccessibilityException“- Wann sie ausgelöst wird. Wenn ein interaktives Formularfeld sich auf einen synthetischen
(nicht vom Autor bereitgestellten) barrierefreien Namen verlassen würde, während ein PDF/UA-Dokument mit
aktivierter strikter Durchsetzung barrierefreier Feldnamen erzeugt wird. Standard-PDF/UA-Ausgaben geben einen
synthetischen Fallback-Namen in das Widget-
/Contentsaus, sodass ein Feld nie unbenannt ist; der Strict-Modus verlangt stattdessen, dass der Autor einen aussagekräftigen Namen liefert (einen Tooltip, oder eine Beschriftung für eine aktionslose Push-Button), damit Screenreader-Nutzende eine echte Beschreibung erhalten (ISO 14289-2:2024 §8.10.2). - Kontext. Überschreibt
getContext()nicht, gibt also ein leeres Array zurück. Das$fieldIdist eine öffentliche readonly-Eigenschaft; der Grund ist die Meldung. - Behebung. Entwicklermaßnahme: Liefern Sie einen Tooltip / barrierefreien Namen für das benannte Feld, bevor Sie ein striktes PDF/UA-Dokument erzeugen, oder deaktivieren Sie den Strict-Modus. Siehe PDF/A- und PDF/UA-Validierung.
VendorExtensionRegistryConflictException
Abschnitt betitelt „VendorExtensionRegistryConflictException“- Wann sie ausgelöst wird. Aus
VendorExtensionRegistry::register(), wenn ein Aufrufer ein bekanntes PDF-Developer-Extension-Vendor-Präfix (ISO 32000-2:2020 §7.12.1) mit einer Beschreibung erneut registriert, die den bereits registrierten Metadaten widerspricht. Deskriptoren sind append-only und konfliktgeprüft; die typisierte Exception ersetzte eine generische\RuntimeException, damit Aufrufer diese spezifische Klasse abfangen können. - Kontext.
getContext()gibtprefix,existing_descriptionundattempted_descriptionzurück. Typisierte Getter:getPrefix(),getExistingDescription(),getAttemptedDescription(). - Behebung. Entwicklermaßnahme: Registrieren Sie das Präfix mit der bestehenden Beschreibung, oder verwenden Sie ein eindeutiges Präfix; überschreiben Sie keine registrierten Metadaten.
Audit-Export
Abschnitt betitelt „Audit-Export“AuditExportException
Abschnitt betitelt „AuditExportException“- Wann sie ausgelöst wird. Wenn die Zusammenstellung des Audit-Export-Bundles, die
Erzeugung der Traceability-Matrix oder die Schema-Projektion zur Laufzeit fehlschlägt. Deckt I/O gegen
claims.json/manifest.json, JSON-Kodierung/Dekodierung des kanonischen Bundles und Schema-Versions-Mismatch auf demAuditExporter::projectToV1()- Rückwärtskompatibilitätspfad ab. Die Meldung nennt die Stufe, das Artefakt, sofern bekannt, und das Detail. - Kontext.
getContext()gibtstage(z. B.read_claims,encode_bundle,project_v1),detailundartefact(Pfad oder schema_version, der den Fehler ausgelöst hat) zurück. Typisierte Getter:getStage(),getDetail(),getArtefact(). - Behebung. Maßnahme von Compliance / DevOps: Prüfen Sie die Eingabe-Artefaktpfade,
erzeugen Sie
claims.jsonaus einem sauberen Lauf neu, oder bauen Sie das Manifest neu, bevor Sie den Export erneut versuchen.
Violation-Value-Objects
Abschnitt betitelt „Violation-Value-Objects“Dies sind keine Exceptions. Es sind unveränderliche Value Objects, die die Engine zurückgibt, um
eine einzelne Verletzung zu beschreiben; sie tragen kein getContext().
ComplianceViolation
Abschnitt betitelt „ComplianceViolation“- Was es ist. Ein
final readonlyValue Object, das einen Regelverstoß repräsentiert, der von einem externen Validator (veraPDF oder gleichwertig) gemeldet wird, einschließlich der ISO- Klauselreferenz und des Orts innerhalb der PDF-Struktur. - Felder. Öffentliche readonly-Eigenschaften:
ruleId(Validator-Regelbezeichner, z. B.6.1.2-1),clause(ISO-Klauselreferenz, z. B.ISO 19005-1:2005, 6.1.2),severity(z. B.error,warning),location(Objektpfad innerhalb der PDF-Struktur) undmessage(menschenlesbare Beschreibung). - Verwendung. Inspizieren Sie die von einem Compliance-Validator zurückgegebene Sammlung; routen oder
zeigen Sie jeden Eintrag nach
severityundclausean. Siehe PDF/A- und PDF/UA-Validierung.
RuleViolation
Abschnitt betitelt „RuleViolation“- Was es ist. Ein
final readonlyValue Object, das eine einzelne Schematron- / EN-16931-Geschäftsregelverletzung repräsentiert, zurückgegeben vonSchematronRunnerInterface::runRules()und innerhalb vonValidationResult::$ruleViolationsaggregiert. Stabilität ist experimental. - Felder. Öffentliche readonly-Eigenschaften:
ruleId(EN-16931-Bezeichner wieBR-{n},BR-CO-{n},BR-CL-{n},BR-DEC-{n}oder ein stufenspezifisches Pack),severity(einRuleSeverity-Enum),message(Regeltext, en-GB),xpath(XPath in das eingebettete XML,nullfür dokumentweite Regeln) undsemanticPath(Punktnotations-BG/BT-Pfad wieBG-22.BT-106,nullfür strukturelle Verletzungen). - Verwendung. Inspizieren Sie die Sammlung am Validierungsergebnis; routen oder zeigen Sie jeden
Eintrag nach
severity,ruleIdund Locator an.