Erreurs du cœur et générales
Ces entrées couvrent les exceptions du cœur et à usage général que lève NextPDF.
La plupart étendent la base NextPdfException, qui elle-même étend
\RuntimeException et implémente ContextAwareExceptionInterface. Cette
interface expose une seule méthode, getContext(): array, renvoyant une carte
plate en snake_case de primitives sûres à sérialiser dans un journal ou une charge
utile APM.
Attrape la famille NextPdfException avec un seul catch (NextPdfException $e).
Ajoute aussi un catch (\RuntimeException $e) pour couvrir les quelques erreurs de
bas niveau de cet ensemble qui étendent directement \RuntimeException (listées
ci-dessous). La base NextPdfException::getContext() renvoie un tableau vide ; les
sous-classes la redéfinissent pour ajouter des champs de domaine. Lorsqu’une classe
ne redéfinit pas getContext(), elle hérite du tableau vide et le détail de
diagnostic vit dans le message et les accesseurs typés à la place.
Quatre types de cet ensemble n’étendent pas NextPdfException :
BlackPointCompensationUnsupportedException et
UnsupportedSourceDocumentException étendent directement \RuntimeException
(attrape-les en tant que \RuntimeException), et ComplianceViolation et
RuleViolation sont des objets-valeurs, pas des exceptions — ils sont documentés
ici parce qu’ils modélisent les données d’erreur et de violation que renvoie le
moteur.
Exception de base
Section intitulée « Exception de base »NextPdfException
Section intitulée « NextPdfException »- Ce que c’est. Base
abstractde toute exception levée par le cœur de NextPDF et ses paquets d’extension. Elle étend\RuntimeExceptionet implémenteContextAwareExceptionInterface. Attraper ce seul type intercepte n’importe quelle erreur de la bibliothèque. - Contexte. La base
getContext()renvoie un tableau vide. Les sous-classes la redéfinissent pour renvoyer des champs propres au domaine. - Rétablissement. N’est pas levée directement. Utilise-la comme type fourre-tout ; branche sur la sous-classe concrète pour un traitement spécifique.
Configuration et activation de fonctionnalités
Section intitulée « Configuration et activation de fonctionnalités »InvalidConfigException
Section intitulée « InvalidConfigException »- Quand elle est levée. Lorsqu’une valeur
Configou une combinaison de valeurs est invalide — un réglage requis manquant, une option mutuellement exclusive, ou une valeur hors de la plage acceptée. Cela signale une erreur de développeur : le code appelant a fourni une configuration qui doit être corrigée avant de réessayer. Le message indique la clé, le type ou la plage attendus, et le type de débogage réel de la valeur fournie. - Contexte.
getContext()renvoieconfig_key,given_valueetexpected_type. Accesseurs typés :getConfigKey(),getGivenValue(),getExpectedType(). - Rétablissement. Action du développeur : corrige la clé de configuration nommée pour lui donner une valeur du type ou de la plage attendus avant de rappeler NextPDF.
NotImplementedException
Section intitulée « NotImplementedException »- Quand elle est levée. Lorsqu’un point d’entrée d’API publique est atteint
mais que son implémentation est intentionnellement absente de la version
actuelle. Utilisée pour les cales de compatibilité dépréciées qui existent pour
donner aux appelants pré-bisect un échec bruyant et actionnable plutôt qu’un
no-op silencieux. Le message combine une étiquette
featurerecherchable par machine et une référencefollowUp(identifiant de défaut, ancre de suivi ou nom de sprint). - Contexte. Ne redéfinit pas
getContext(), donc elle renvoie un tableau vide. Les valeurs$featureet$followUpsont des propriétés publiques en lecture seule et sont intégrées dans le message. - Rétablissement. Action de l’appelant de la bibliothèque : supprime l’appel, ou épingle une version future qui livre le suivi nommé.
IncompatibleFeatureFlagsException
Section intitulée « IncompatibleFeatureFlagsException »- Quand elle est levée. À la construction du
Config(Config::validate()) lorsqu’une combinaison deCssFeatureFlagsest incohérente en interne — un indicateur en présuppose un autre qui est désactivé. La seule combinaison interdite aujourd’hui estlayoutSubgrid = trueaveclayoutGrid = false: un axe en subgrid dérive ses lignes de grille d’un conteneur de grille parent (CSS Grid Layout Module Level 2 §1), donc subgrid sans grid décrit une grille qui ne peut pas exister. La vérification s’exécute sur les indicateurs résolus, doncCssRenderingMode::Safe(qui force chaque fonctionnalité Phase 4+ à off) masque la combinaison plutôt que de la déclencher. ÉtendStrictModeViolation. - Contexte.
getContext()fusionne les champs de mode strict du parent (cssDeviation,excId,chunkSha256,location) avec les booléenslayoutGridetlayoutSubgrid. LelocationvautConfig::validate()etcssDeviationencode la paire d’indicateurs. - Rétablissement. Action de l’appelant de la bibliothèque : active
layoutGriden même temps quelayoutSubgrid, ou désactivelayoutSubgrid.
IncompatibleRenderingModeException
Section intitulée « IncompatibleRenderingModeException »- Quand elle est levée. À la construction du
Configlorsqu’un appariementCssRenderingModeetCssLayoutModetombe en dehors des cellules compatibles de la matrice de modes. Le seul appariement interdit aujourd’hui estCssRenderingMode::Safe+CssLayoutMode::Retained— Safe force chaque fonctionnalité Phase 4+ à off, laissant les contextes de formatage en mode retenu (Grid, Subgrid,@container) sans consommateurs, donc la combinaison est rejetée plutôt que d’être laissée se dégrader silencieusement. ÉtendStrictModeViolation. - Contexte.
getContext()fusionne les champs de mode strict du parent avecmode1(la valeur du mode de rendu) etmode2(la valeur du mode de mise en page). LecssDeviationencode la paire de modes ;locationvautConfig::validate(). - Rétablissement. Action de l’appelant de la bibliothèque : choisis
Safe+Streamingpour le retour arrière, ou un mode de rendu non-Safe (Normal/Strict/Audit) avecRetainedpour Grid / Subgrid / Container Queries.
StrictModeViolation
Section intitulée « StrictModeViolation »- Quand elle est levée. Base
abstractde toute exception de déviation par rapport à la spécification, levée sousCssRenderingMode::Strict. En mode strict, toute déviation CSS détectée qui n’est pas liée à une entrée d’exceptionEXC-NNNenregistrée lève une instance de cette classe (ou d’une sous-classe) au point de détection. N’est pas levée directement ; voirIncompatibleFeatureFlagsExceptionetIncompatibleRenderingModeException. - Contexte.
getContext()renvoie les quatre champs ADR-023 :cssDeviation(étiquette courte de la construction déviante),excId(identifiant de registre lorsqu’enregistré, sinonnull),chunkSha256(hachage du fragment de citation de spécification lorsqu’il est connu, sinonnull) etlocation(origine lisible par l’appelant, sinonnull). - Rétablissement. Action de l’appelant de la bibliothèque : enregistre la
déviation en tant que nouvelle entrée
EXC-NNNvalidée, ou corrige le renderer pour supprimer la déviation.
Entrée HTML et CSS
Section intitulée « Entrée HTML et CSS »HtmlParsingException
Section intitulée « HtmlParsingException »- Quand elle est levée. Lorsque l’analyse de l’entrée HTML ou la construction
du DOM échoue : déclarations de charset invalides, violations de la limite de
taille d’entrée, profondeur d’imbrication excessive, dépassements du nombre
d’éléments et erreurs de structure de table telles qu’un maximum de nombre de
lignes. L’épuisement de ressources propre au CSS est signalé à la place par
CssParserLimitExceededExceptionetCssResolutionBudgetExceededException. - Contexte.
getContext()renvoiehtml_snippet(un extrait court et tronqué du HTML fautif),position(décalage en octets, ou-1si inconnu) etrule(la contrainte d’analyseur violée). Accesseurs typés :getHtmlSnippet(),getPosition(),getRule(). - Rétablissement. Action du développeur : simplifie l’entrée HTML ou ajuste les limites de l’analyseur.
CssParserLimitExceededException
Section intitulée « CssParserLimitExceededException »- Quand elle est levée. Lorsque l’entrée CSS dépasse une limite de sécurité
configurée de l’analyseur. Deux catégories sont couvertes via les constructeurs
nommés :
forByteLimit()(feuille de style trop grande pour un traitement par regex sûr) etforNestingDepth()(récursion d’imbrication CSS trop profonde). Les deux messages nomment la valeur réelle et la limite. - Contexte.
getContext()renvoielimit_type(byteounesting_depth),actualetlimit. - Rétablissement. Action du développeur : scinde la feuille de style en feuilles plus petites, réduis la profondeur d’imbrication, ou relève la limite configurée.
CssResolutionBudgetExceededException
Section intitulée « CssResolutionBudgetExceededException »- Quand elle est levée. Lorsque la résolution CSS
:has()dépasse son budget de parcours. Le résolveur:has()en deux passes applique un budget strict de visites de nœuds pour empêcher des sélecteurs pathologiques de provoquer des parcours quadratiques du document ; dès que le nombre total de visites dépasse la limite, la feuille de style est rejetée comme trop complexe. Le message nomme le nombre de visites et le budget. - Contexte.
getContext()renvoievisitsetbudget. Accesseurs typés :getVisits(),getBudget(). - Rétablissement. Action du développeur : réduis la complexité des sélecteurs, ou relève le budget configuré.
Polices et images
Section intitulée « Polices et images »FontNotFoundException
Section intitulée « FontNotFoundException »- Quand elle est levée. Lorsqu’un fichier de police ne peut pas être localisé ou lu au niveau du système de fichiers : la famille ou le chemin demandé n’existe pas, n’est pas lisible, ou le répertoire de polices configuré est inaccessible. Les données de police peuvent être valides — cela signale seulement qu’elles ne peuvent pas être atteintes. Le message liste les chemins recherchés.
- Contexte.
getContext()renvoiefont_name,search_paths(une liste) etfallback_attempted(un booléen). Accesseurs typés :getFontName(),getSearchPaths(),wasFallbackAttempted(). - Rétablissement. Action du développeur : vérifie le chemin de la police. Action d’infrastructure : corrige les permissions de fichier sur le fichier ou le répertoire de police.
FontParsingException
Section intitulée « FontParsingException »- Quand elle est levée. Lorsqu’un fichier de police est trouvé mais que son
contenu n’est pas utilisable : il est corrompu, dans un format non pris en charge,
ou il manque des tables requises. Couvre les échecs de validation structurelle
pendant l’analyse TrueType, Type 1, CFF et OpenType — en-têtes tronqués,
répertoires de tables invalides, tables obligatoires manquantes (
head,hhea,OS/2), erreurs de dépaquetage et violations de taille. Le message nomme le fichier et l’erreur d’analyse. - Contexte.
getContext()renvoiefont_fileetparse_error. Accesseurs typés :getFontFile(),getParseError(). - Rétablissement. Action du développeur : remplace le fichier de police par un fichier valide.
ImageProcessingException
Section intitulée « ImageProcessingException »- Quand elle est levée. Lorsqu’une image ne peut pas être décodée, est dans un format non pris en charge, ou échoue au traitement GD/Imagick : octets magiques non reconnaissables, données JPEG corrompues, types MIME non pris en charge, violations de la limite de taille de fichier et échecs d’allocation de ressource GD. L’image était accessible mais ses données de pixels n’ont pas pu être extraites pour l’incorporation.
- Contexte.
getContext()renvoieimage_path(vide pour des données inline),format(détecté ou attendu, p. ex.jpeg,png,unknown) etoperation(p. ex.decode,resize,embed). Accesseurs typés :getImagePath(),getFormat(),getOperation(). - Rétablissement. Action du développeur : fournis un fichier image valide et pris en charge.
Sortie, mise en page et sérialisation
Section intitulée « Sortie, mise en page et sérialisation »CompressionException
Section intitulée « CompressionException »- Quand elle est levée. Lorsque la compression ou la décompression FlateDecode
(zlib) échoue — échecs de
gzcompress/gzuncompresssur les flux de contenu, les données de police, le contenu de page, les données de pièce jointe et les flux de référence croisée. Typiquement un flux d’entrée corrompu, une mémoire insuffisante, ou une extension zlib manquante. - Contexte.
getContext()renvoiealgorithm(nom du filtre, p. ex.FlateDecode,LZWDecode) etstream_length(longueur en octets, ou-1si inconnue). Accesseurs typés :getAlgorithm(),getStreamLength(). - Rétablissement. Action d’infrastructure : vérifie que
ext-zlibest chargée et que la mémoire est suffisante.
WriterException
Section intitulée « WriterException »- Quand elle est levée. Lorsque la sérialisation PDF, la linéarisation ou la
sortie d’E/S échoue : erreurs d’écriture de flux de
PdfWriter, corruption de la table de référence croisée, échecs de génération d’en-tête/de fin de fichier, échecs de résolution de référence d’objet, erreurs d’écriture de fichier et débordements du tampon de sortie. Un document en mémoire valide n’a pas pu être sérialisé en un flux d’octets valide. Le message nomme l’étape. - Contexte.
getContext()renvoieoutput_path(vide pour une sortie en chaîne) etwriter_state(l’étape, p. ex.header,body,xref,trailer). Accesseurs typés :getOutputPath(),getWriterState(). - Rétablissement. Action d’infrastructure : vérifie l’espace disque, les permissions de fichier et le flux de sortie.
PageLayoutException
Section intitulée « PageLayoutException »- Quand elle est levée. Lorsque les contraintes de mise en page ne peuvent pas être satisfaites : violations de mise en page en colonnes (largeur insuffisante, nombre de colonnes invalide), débordement de contenu au-delà des bordures de page et conflits de marges. La mise en page demandée est géométriquement impossible pour les dimensions de page et le contenu donnés. Le message nomme le numéro de page lorsqu’il est connu et la contrainte violée.
- Contexte.
getContext()renvoiepage_number(à base 1, ou0si inconnu) etconstraint. Accesseurs typés :getPageNumber(),getConstraint(). - Rétablissement. Action du développeur : ajuste la taille de page, les marges, les réglages de colonnes ou le contenu.
TemplateException
Section intitulée « TemplateException »- Quand elle est levée. Lorsqu’une opération d’import ou de réutilisation de
modèle PDF échoue dans
TemplateManager: transitions d’état de modèle invalides (début ou fin de modèles hors séquence), référence à un modèle inexistant et échecs de compression de flux lors de la sérialisation du modèle. Le message nomme l’opération et l’identifiant de modèle lorsqu’il est attribué. - Contexte.
getContext()renvoietemplate_id(vide s’il n’est pas encore attribué) etoperation(p. ex.begin,end,use,serialize). Accesseurs typés :getTemplateId(),getOperation(). - Rétablissement. Action du développeur : corrige la séquence d’utilisation du modèle ou le PDF source.
Invariants du flux de contenu
Section intitulée « Invariants du flux de contenu »ContentStreamBalanceException
Section intitulée « ContentStreamBalanceException »- Quand elle est levée. Lorsqu’un
ContentStreamBuilderdétecte une paire d’opérateurs déséquilibrée à la fermeture du flux (ou en cours de flux lorsque les invariants sont vérifiés avec empressement). Elle capture les compteurs de profondeur qui ont échoué à l’invariant d’équilibre afin que la journalisation puisse identifier quel émetteur a laissé fuir unq,BTouBMCsans sonQ,ETouEMCcorrespondant. Selon ISO 32000-2:2020 §8.4.2 (pile d’état graphique), §9.4.1 (objets texte) et §14.6 (contenu marqué). - Contexte.
getContext()renvoiegraphics_depth,text_block_depth,marked_content_depthetoffending_operator. Accesseurs typés :getGraphicsDepth(),getTextBlockDepth(),getMarkedContentDepth(),getOffendingOperator(). - Rétablissement. Action du développeur : localise l’émetteur qui a ouvert une construction sans la fermer.
GraphicsStateBalanceException
Section intitulée « GraphicsStateBalanceException »- Quand elle est levée. Lorsqu’un flux de contenu PDF se ferme avec des
opérateurs
q/Qdéséquilibrés. ISO 32000-2:2020 §8.4.2 exige que chaque sauvegarde d’état graphique (q) soit appariée à exactement une restauration (Q) avant la fin du flux ; un déséquilibre laisse fuir la transformation, le chemin de découpe, les couleurs et l’intention de rendu vers les pages suivantes ou les Form XObjects. Levée uniquement lorsque la vérification stricte de l’état graphique est activée (NEXTPDF_GFXSTATE_STRICT=1) ; en mode relâché, un avertissement est émis viatrigger_error()à la place. - Contexte.
getContext()renvoiesave_depth(positif pour trop de sauvegardes, négatif pour trop de restaurations). Accesseur typé :getSaveDepth(). - Rétablissement. Action du développeur : localise la paire
save()/restore()non appariée.
MissingShadingResourceException
Section intitulée « MissingShadingResourceException »- Quand elle est levée. Lorsque
ConicGradientRenderer::render()est invoqué sans contexte de registre de ressources Shading. Le changement cassant de la v10.0.0 a supprimé l’ancien chemin de substitution par carte de marqueurs implicite : les appelants doivent construire le renderer avec unShadingResourceRegistryInterfaceafin que l’objet indirect/ShadingType 4soit enregistré dans le sous-dictionnaire de ressources Shading de la page (ISO 32000-2 §8.7.4.2 / §8.7.4.3). Le message nomme le contexte de l’appelant et pointe vers la note de migration v9.x→v10.0. - Contexte.
getContext()renvoiecontext(une étiquette courte de contexte d’appelant, p. ex.ConicGradientRenderer::render). - Rétablissement. Action de l’appelant de la bibliothèque : câble une instance
de registre de ressources Shading dans le constructeur du renderer avant d’appeler
render().
Linéarisation (Fast Web View)
Section intitulée « Linéarisation (Fast Web View) »LinearizationInvariantException
Section intitulée « LinearizationInvariantException »- Quand elle est levée. Lorsque le
Linearizerv2 à trois passes détecte que ses assertions MEASURE → PLACE → FILL ont été violées : un nombre d’octets de la passe 3 ne correspondant pas à la longueur de fichier prédite par la passe 1 (dérive de décalage), un emplacement réservé du dictionnaire de linéarisation trop petit pour la largeur sérialisée, ou un décalage de flux d’indices/H [offset length]ne correspondant pas à la sortie finale. Faire remonter cela plutôt que d’émettre un PDF cassé est une garantie de sécurité affichée. - Contexte.
getContext()renvoieinvariant(le nom de l’invariant violé),expected,actualetdelta(la différence signée). Accesseurs typés :getInvariant(),getExpectedValue(),getActualValue(). - Rétablissement. Action du mainteneur : ouvre un rapport de bug — ces invariants devraient tenir pour toutes les entrées bien formées. Capture l’exception précédente chaînée.
LinearizationUnimplementedException
Section intitulée « LinearizationUnimplementedException »- Quand elle est levée. Lorsque l’indicateur de fonctionnalité du linéariseur
est réglé sur un backend intentionnellement désactivé. Actuellement levée
uniquement pour
linearizerVersion === 'v1-noop', le réglage de rétrogradation d’urgence qui rejette toutes les tentatives de linéarisation à l’exécution sans changement de code ni redéploiement — utile pour couper Fast Web View en production. - Contexte.
getContext()renvoiereason(une explication courte lisible par un humain). Accesseur typé :getReason(). - Rétablissement. Action de l’opérateur / de l’ingénierie de release : ajuste la configuration ou mets à niveau vers une version de backend corrigée.
Invariants de conformité et de profil
Section intitulée « Invariants de conformité et de profil »ConformanceViolationException
Section intitulée « ConformanceViolationException »- Quand elle est levée. Lorsqu’une fonctionnalité demandée ne peut pas être
émise sans rompre le contrat de conformité ISO déclaré du document, et que le
moteur échoue en mode fermé plutôt que d’écrire un objet non conforme. Le
déclencheur canonique est une annotation multimédia
Screenou une actionRendition(ISO 32000-2:2020 §12.5.6.18 / §13.2) sous un profil d’archivage PDF/A, ce que chaque partie de PDF/A interdit (série ISO 19005) — le fichier échouerait à la validation veraPDF, donc le moteur refuse d’emblée. - Contexte.
getContext()renvoieconformance_mode(le mode déclaré, p. ex.pdfa4) etfeature(la fonctionnalité rejetée, p. ex.Screen annotation). Les deux sont des propriétés publiques en lecture seule. La raison est le message de l’exception. - Rétablissement. Action du développeur : abandonne l’appel multimédia pour une
sortie d’archivage, ou cible un profil de conformité non archivistique (par défaut
ConformanceMode::Plain).
PdfRViolationException
Section intitulée « PdfRViolationException »- Quand elle est levée. Lorsqu’un invariant de conformité PDF/R-1
(ISO 23504-1:2020) est violé, soit à la construction d’un objet-valeur (les
profils
PdfRStrip,PdfRPage,PdfRDocument), soit au moment du validateur (PdfRValidator). Elle capture la clause normative fautive et une description de violation sur une ligne afin que les consommateurs d’audit puissent router les constats vers la bonne sous-clause §6 sans analyser du texte libre. - Contexte.
getContext()renvoiestandard(toujoursISO 23504-1:2020),clause(le chemin de clause, p. ex.6.6.1) etviolation. Accesseurs typés :getClause(),getViolation(). - Rétablissement. Action du développeur : corrige l’entrée rejetée ou reconstruis le document pour qu’il soit conforme à la clause citée.
Génération de codes-barres
Section intitulée « Génération de codes-barres »BarcodeException
Section intitulée « BarcodeException »- Quand elle est levée. Lorsque la génération de code-barres échoue à cause de
données invalides ou d’erreurs d’encodage à travers toutes les symbologies prises
en charge (Code 39/128, UPC-A/E, EAN-8/13, Interleaved/Standard 2-of-5, POSTNET,
PLANET, MSI, ISBN, ISSN, QR Code, PDF417, DataMatrix, JabCode), et d’échecs de
rendu GD lors de la création de l’image. La valeur du code-barres est plafonnée à
un extrait de 128 octets dans le message et le contexte — les charges utiles trop
longues ou binaires sont stockées tronquées avec un marqueur
... (<N> bytes, truncated)afin de ne pas pouvoir être copiées en entier dans un journal. - Contexte.
getContext()renvoiebarcode_type(symbologie, p. ex.QRCODE,EAN13,CODE128) etvalue(la valeur tronquée). Accesseurs typés :getBarcodeType(),getValue(). - Rétablissement. Action du développeur : corrige les données du code-barres ou la sélection de symbologie.
BarcodeEncoderNotFoundException
Section intitulée « BarcodeEncoderNotFoundException »- Quand elle est levée. Depuis
BarcodeEncoderRegistrylorsque le type d’encodeur demandé est inconnu ou que sa porte de capacité est fermée. Elle implémente aussi PSR-11Psr\Container\NotFoundExceptionInterface, donc le registre est un conteneur conforme aux standards. Le message nomme la symbologie et la raison. - Contexte. Ne redéfinit pas
getContext(), donc elle renvoie un tableau vide. Les valeurstypeetreasonsont disponibles via les accesseursgetType()etgetReason()et dans le message. - Rétablissement. Action du développeur : enregistre l’encodeur, ou installe le
paquet qui le fournit (par exemple
nextpdf/propour Micro QR / DotCode / HanXin / JabCode).
Cryptographie, chiffrement et signatures
Section intitulée « Cryptographie, chiffrement et signatures »EncryptionException
Section intitulée « EncryptionException »- Quand elle est levée. Lorsque le chiffrement ou le déchiffrement PDF échoue : échecs de chiffrement/déchiffrement AES-256-CBC, erreurs OpenSSL, tailles d’IV invalides, échecs de calcul de hachage et erreurs de calcul de valeur UE/OE. Typiquement une extension OpenSSL manquante ou mal configurée, un matériel de clé invalide, ou des données chiffrées corrompues. Le message nomme l’opération et l’algorithme.
- Contexte.
getContext()renvoiealgorithm(p. ex.AES-256-CBC) etoperation(p. ex.encrypt,decrypt,key_derivation). Accesseurs typés :getAlgorithm(),getOperation(). - Rétablissement. Action d’infrastructure : assure-toi qu’OpenSSL est disponible et correctement configuré. Voir Chiffrement et permissions.
UnsupportedAlgorithmException
Section intitulée « UnsupportedAlgorithmException »- Quand elle est levée. Lorsqu’un algorithme cryptographique ne peut pas être
exécuté dans l’environnement d’exécution actuel : une extension PHP requise est
indisponible, la bibliothèque sous-jacente manque la primitive, l’extension
hashempaquetée ne peut pas synthétiser une variante SHAKE/XOF, ou l’algorithme n’est pas enregistré dans leSignatureAlgorithmRegistry. Le moteur ne doit pas se dégrader silencieusement vers une primitive plus faible, donc il fait remonter ceci à la place. La fabrique statiquenonFipsHostUnderFipsProfile()la lève (avec l’identifiant d’algorithmeregulatory-profile:fips) lorsqueRegulatoryProfile::FIPSest sélectionné mais qu’un fournisseur OpenSSL validé FIPS ne peut pas être confirmé (à la foisFIPS_ABSENTetINDETERMINATEéchouent en mode fermé). - Contexte.
getContext()renvoiealgorithm(nom ou OID, p. ex.shake256,Ed25519,AES-256-GCM) etreason(actionnable par l’opérateur). Accesseurs typés :getAlgorithm(),getReason(). - Rétablissement. Action de l’opérateur : installe l’extension manquante ou mets
à niveau l’environnement d’exécution ; pour la porte FIPS, installe une build
OpenSSL validée FIPS ou règle
NEXTPDF_FIPS_MODEexplicitement. Action du développeur : enregistre un descripteur d’algorithme personnalisé viaSignatureAlgorithmRegistry::register().
SignatureException
Section intitulée « SignatureException »- Quand elle est levée. Lorsqu’une opération de signature numérique échoue :
gestion de certificat et de clé privée (analyse PKCS#12, décodage PEM/DER,
validation X.509), construction PKCS#7/CMS, format de signature ECDSA, violations
de taille de conteneur, encodage DER et orchestration PAdES. Les erreurs propres à
la TSA sont signalées à la place par la
TsaExceptionplus spécifique. Préfère les fabriques nommées typées au constructeur positionnel ; chacune lie la cause racine à la fin du message. Exemples :ltvCapabilityMissing()(B-LT/B-LTA nécessitenextpdf/enterprise),tsaRequired()/tsaUrlEmpty()/tsaEmptyToken(),httpClientMissing(),hsmSignerMissing()/hsmSignatureEmpty(),signatureContentsNotFound()/signatureContentsPaddingCorrupt(),unexpectedKeyType(),pemDecodingFailed(), la famille Ed25519 (ed25519SignatureMalformed(),ed25519RoundTripVerifyFailed(),ed25519KeyParseFailed(),ed25519SeedInvalid(),ed25519SecretKeyMalformed(),ed25519PublicKeyInvalid()),documentTimestampNotEmitted(),algorithmPolicyRejected(),digestOnlyAlgorithmRefused(),encryptedLtvUnsupported(),incrementalUpdateWriterMissing(), et la paire de statut OCSPnonSuccessfulOcspResponseStatus()/reservedOcspResponseStatus()(RFC 6960 §4.2.1). Ces fabriques échouent en mode fermé plutôt que d’émettre une signature silencieusement rétrogradée. - Contexte.
getContext()renvoiecert_info(DN du sujet ou empreinte, ou vide),signature_level(le niveau PAdES tenté, p. ex.B-B,B-T,B-LT,B-LTA) etdetail(le diagnostic actionnable, vide pour le constructeur positionnel hérité). Accesseurs typés :getCertInfo(),getSignatureLevel(),getDetail(). - Rétablissement. Action du développeur : corrige la configuration du certificat/de la clé. Pour les fabriques de capacité manquante, installe le paquet nommé. Voir Échecs de signature et d’horodatage pour les entrées symptôme-résolution par fabrique.
BlackPointCompensationUnsupportedException
Section intitulée « BlackPointCompensationUnsupportedException »- Quand elle est levée. Depuis
NullBlackPointCompensationTransform::transform()lorsqu’un appelant demande à l’adaptateur nul d’appliquer une transformation de compensation du point noir ISO 18619 non-Default. L’adaptateur nul est le repli sûr pour les environnements sans backend de gestion des couleurs ; produire un échantillon transformé sans un vrai module de gestion des couleurs signalerait silencieusement une conversion erronée. Contrairement à la plupart des entrées ici, celle-ci étend directement\RuntimeException, pasNextPdfException, donc les cheminscatch (\RuntimeException)existants continuent de fonctionner. - Contexte. Pas de
getContext(); c’est une simple\RuntimeException. Le détail est dans le message. - Rétablissement. Action du développeur : enregistre une vraie
BlackPointCompensationTransform(LittleCMS, Argyll, pur PHP), ou restreins/UseBlackPtCompàBlackPointCompensation::Default.
Assemblage de document et accessibilité
Section intitulée « Assemblage de document et accessibilité »UnsupportedSourceDocumentException
Section intitulée « UnsupportedSourceDocumentException »- Quand elle est levée. Lorsqu’un document source ne peut pas être copié en
toute sécurité dans une sortie de fusion/scission et que l’opération échoue en
mode fermé plutôt que d’émettre un résultat corrompu ou compromis sur le plan de
la sécurité. Utilise les fabriques nommées :
encrypted()(ISO 32000-2 §7.6 — le contenu ne peut pas être copié sans la clé),signed()(§12.8 — copier des pages invaliderait la plage d’octets de la signature),unsupportedStreamFilter()(un filtre que le lecteur de graphe d’objets ne peut pas reproduire à l’identique),multipleInteractiveForms()(une limitation documentée : plus d’une source porte un/AcroFormnon vide, §12.7) etsplitWithInteractiveForm()(une limitation documentée : sous-ensembler les pages d’une source porteuse de formulaire orphelinerait les widgets). Étend directement\RuntimeException, pasNextPdfException. - Contexte. Pas de
getContext(); c’est une simple\RuntimeException. La cause et le numéro d’objet affecté sont nommés dans le message. - Rétablissement. Action du développeur : déchiffre d’abord la source ou fournis la clé ; pour les sources signées, signe après la fusion à la place ; pour les fusions multi-formulaires, aplatis ou supprime les champs de formulaire de toutes les sources sauf une ; pour les scissions de sources porteuses de formulaire, aplatis le formulaire avant la scission.
InvalidBcp47TagException
Section intitulée « InvalidBcp47TagException »- Quand elle est levée. Depuis
Bcp47Validator::validate()lorsqu’une étiquette de langue candidate est malformée selon l’ABNF RFC 5646 §2.1, ou échoue à la recherche dans le registre organisé. Propre à BCP-47 / ISO 14289-2:2024 §8.4.4, distincte d’InvalidConfigExceptionafin que les appelants en aval de la couture d’accessibilité puissent attraper un type étroit. La paire de prédicatsBcp47Validator::isWellFormed()/isValid()reste la surface de valeur de retour rétrocompatible pour les appelants qui préfèrent brancher plutôt que de recourir aux exceptions. - Contexte.
getContext()renvoietag(le candidat exactement tel que fourni) etreason(un code de rejet stable lisible par machine, p. ex.empty-string,well-formed-shape,unregistered-primary,duplicate-variant). Accesseurs typés :getTag(),getReason(). - Rétablissement. Action du développeur : corrige l’étiquette de langue pour en faire une étiquette BCP-47 bien formée et enregistrée. Voir Polices et balisage.
FormFieldAccessibilityException
Section intitulée « FormFieldAccessibilityException »- Quand elle est levée. Lorsqu’un champ de formulaire interactif s’appuierait
sur un nom accessible synthétique (non fourni par l’auteur) tout en produisant un
document PDF/UA avec l’application stricte du nom de champ accessible activée. La
sortie PDF/UA par défaut émet un nom de repli synthétique dans le
/Contentsdu widget afin qu’un champ ne soit jamais sans nom ; le mode strict exige plutôt que l’auteur fournisse un nom significatif (une infobulle, ou une légende pour un bouton-poussoir sans action) afin que les utilisateurs de lecteur d’écran obtiennent une vraie description (ISO 14289-2:2024 §8.10.2). - Contexte. Ne redéfinit pas
getContext(), donc elle renvoie un tableau vide. Le$fieldIdest une propriété publique en lecture seule ; la raison est le message. - Rétablissement. Action du développeur : fournis une infobulle / un nom accessible pour le champ nommé avant de produire un document PDF/UA strict, ou désactive le mode strict. Voir Validation PDF/A et PDF/UA.
VendorExtensionRegistryConflictException
Section intitulée « VendorExtensionRegistryConflictException »- Quand elle est levée. Depuis
VendorExtensionRegistry::register()lorsqu’un appelant réenregistre un préfixe de fournisseur d’extension-développeur PDF connu (ISO 32000-2:2020 §7.12.1) avec une description qui contredit les métadonnées déjà enregistrées. Les descripteurs sont en ajout seul et à détection de conflit ; l’exception typée a remplacé une\RuntimeExceptiongénérique afin que les appelants puissent attraper cette classe spécifique. - Contexte.
getContext()renvoieprefix,existing_descriptionetattempted_description. Accesseurs typés :getPrefix(),getExistingDescription(),getAttemptedDescription(). - Rétablissement. Action du développeur : enregistre le préfixe avec la description existante, ou utilise un préfixe distinct ; n’écrase pas les métadonnées enregistrées.
Export d’audit
Section intitulée « Export d’audit »AuditExportException
Section intitulée « AuditExportException »- Quand elle est levée. Lorsque l’assemblage du paquet d’export d’audit, la
génération de la matrice de traçabilité ou la projection de schéma échoue à
l’exécution. Couvre les E/S sur
claims.json/manifest.json, l’encodage/le décodage JSON du paquet canonique et le décalage de version de schéma sur le chemin de rétrocompatibilitéAuditExporter::projectToV1(). Le message nomme l’étape, l’artefact lorsqu’il est connu et le détail. - Contexte.
getContext()renvoiestage(p. ex.read_claims,encode_bundle,project_v1),detailetartefact(le chemin ou la schema_version qui a déclenché l’échec). Accesseurs typés :getStage(),getDetail(),getArtefact(). - Rétablissement. Action de conformité / DevOps : vérifie les chemins des
artefacts d’entrée, régénère
claims.jsonà partir d’une exécution propre, ou reconstruis le manifeste avant de retenter l’export.
Objets-valeurs de violation
Section intitulée « Objets-valeurs de violation »Ce ne sont pas des exceptions. Ce sont des objets-valeurs immuables que le moteur
renvoie pour décrire une violation individuelle ; ils ne portent pas de
getContext().
ComplianceViolation
Section intitulée « ComplianceViolation »- Ce que c’est. Un objet-valeur
final readonlyreprésentant un échec de règle unique signalé par un validateur externe (veraPDF ou équivalent), incluant la référence de clause ISO et l’emplacement dans la structure du PDF. - Champs. Propriétés publiques en lecture seule :
ruleId(identifiant de règle du validateur, p. ex.6.1.2-1),clause(référence de clause ISO, p. ex.ISO 19005-1:2005, 6.1.2),severity(p. ex.error,warning),location(chemin d’objet dans la structure du PDF) etmessage(description lisible par un humain). - Utilisation. Inspecte la collection renvoyée par un validateur de conformité ;
route ou affiche chaque entrée selon
severityetclause. Voir Validation PDF/A et PDF/UA.
RuleViolation
Section intitulée « RuleViolation »- Ce que c’est. Un objet-valeur
final readonlyreprésentant une violation de règle métier Schematron / EN 16931, renvoyée parSchematronRunnerInterface::runRules()et agrégée dansValidationResult::$ruleViolations. La stabilité est expérimentale. - Champs. Propriétés publiques en lecture seule :
ruleId(identifiant EN 16931 tel queBR-{n},BR-CO-{n},BR-CL-{n},BR-DEC-{n}, ou un pack propre à un palier),severity(une énumérationRuleSeverity),message(texte de la règle, en-GB),xpath(XPath dans le XML embarqué,nullpour les règles à l’échelle du document) etsemanticPath(chemin BG/BT en notation par points tel queBG-22.BT-106,nullpour les violations structurelles). - Utilisation. Inspecte la collection sur le résultat de validation ; route ou
affiche chaque entrée selon
severity,ruleIdet le localisateur.