Enterprise édition
Common — Référence détaillée
En un coup d’œil
Section intitulée « En un coup d’œil »Cette page est la référence détaillée de l’espace de noms NextPDF\Enterprise\Common. L’espace de noms expose un seul symbole public : l’objet-valeur BoundingBox. C’est un rectangle immuable et normalisé destiné au positionnement spatial indépendant de la résolution sur une page. Les surfaces Enterprise Intelligence et Privacy le consomment pour la géométrie des cellules de tableau, l’emplacement des entités et les zones de caviardage. Le module ne réalise aucune E/S, ne détient aucun contenu de document et ne touche à aucune cryptographie. Pour des conseils de flux de travail, lis d’abord la page de capacité Common.
Disponibilité & licence
Section intitulée « Disponibilité & licence »Cette capacité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de niveau Enterprise. Un déploiement dépourvu de ce droit ne charge pas les classes de la capacité. Compare les éditions et obtiens une licence.
La primitive elle-même n’effectue aucun contrôle de licence ; le contrôle a lieu sur les surfaces Enterprise qui la consomment. Il n’existe aucun équivalent de niveau Core ou Pro de cette classe. Elle n’est livrée que dans le paquet nextpdf/enterprise et ne duplique ni ne remplace les types géométriques de Core.
Surface de l’API publique
Section intitulée « Surface de l’API publique »| Symbole | Paramètres | Comportement par défaut | Retourne | Lève ou échoue avec | Notes |
|---|---|---|---|---|---|
BoundingBox::__construct | float $x, float $y, float $width, float $height | Valide chaque valeur par rapport à [0.0, 1.0], puis valide les deux sommes de bords | BoundingBox | InvalidArgumentException quand une valeur est hors plage ou qu’une somme de bords dépasse 1.0 + 1e-9 | Les quatre valeurs deviennent des propriétés public readonly |
BoundingBox::area | aucun | Multiplie width par height | float | Rien de déclaré | Retourne 0.0 pour les boîtes dégénérées |
BoundingBox::contains | self $other | Teste si $other se trouve entièrement à l’intérieur de cette boîte | bool | Rien de déclaré | Les bords droit et bas tolèrent +1e-9 ; les bords gauche et haut comparent à l’exact |
BoundingBox::overlaps | self $other | Teste une intersection stricte de rectangles | bool | Rien de déclaré | Un opérande d’aire nulle de l’un ou l’autre côté retourne false |
Signature du point d’entrée
Section intitulée « Signature du point d’entrée »final readonly class BoundingBox{ public function __construct( public float $x, public float $y, public float $width, public float $height, )
public function area(): float
public function contains(self $other): bool
public function overlaps(self $other): bool}Contrat de comportement
Section intitulée « Contrat de comportement »Modèle de coordonnées
Section intitulée « Modèle de coordonnées »- Les quatre valeurs sont des fractions des dimensions de la page, normalisées dans la plage
[0.0, 1.0]. xsitue le bord gauche etysitue le bord haut de la boîte.x + widthety + heightdélimitent les bords droit et bas.- La normalisation rend chaque opération indépendante de la résolution. La même boîte adresse la même région de page quelle que soit la taille de rendu ou la résolution (DPI).
Construction
Section intitulée « Construction »- Le constructeur est l’unique point de validation. Une coordonnée hors de
[0.0, 1.0]lèveInvalidArgumentException; le message nomme le composant fautif et la valeur reçue. - Une somme de bords supérieure à
1.0 + 1e-9lèveInvalidArgumentException; le message rapporte les deux opérandes et leur somme. La tolérance1e-9absorbe l’arrondi en virgule flottante issu de l’arithmétique de normalisation en amont. - Une instance construite est immuable. La classe est
final readonly, si bien que les écritures de propriété échouent avec uneErrorPHP et que la classe ne peut être étendue.
Prédicats
Section intitulée « Prédicats »area()retournewidth * height. C’est un calcul pur sans effet de bord.contains()retournetruequand l’autre boîte se trouve entièrement à l’intérieur de cette boîte. Les comparaisons des bords droit et bas portent une tolérance+1e-9; les comparaisons des bords gauche et haut sont exactes. Toute boîte se contient elle-même, et une boîte d’aire nulle peut être contenue.overlaps()retournetruesur une intersection stricte de rectangles. Les quatre comparaisons de bords sont strictes, sans tolérance. Si l’un ou l’autre opérande est d’aire nulle, le résultat estfalse.- L’inclusion n’implique donc pas le chevauchement : une boîte dégénérée à l’intérieur d’une autre boîte est contenue mais ne chevauche jamais.
- Aucune méthode ne réalise d’E/S, de persistance, d’accès réseau ou de journalisation, et aucune ne détient de contenu de document ni de données personnelles. Il n’existe aucune ressource détenue par l’opérateur pour cette surface.
Consommateurs
Section intitulée « Consommateurs »Les modules Enterprise partagent cette primitive plutôt que de définir une géométrie propre à chaque module. Dans Intelligence, la sortie de TableExtractor la porte sur les valeurs TableCell et KeyValuePair. Dans Privacy, PiiEntity, RedactionFinding et ZoneRedaction localisent le contenu avec elle, et RedactionEngine consomme ces emplacements. Les contrats de ces surfaces sont documentés sur leurs propres pages de référence.
Cas limites & modes de défaillance
Section intitulée « Cas limites & modes de défaillance »- Composant hors plage. N’importe laquelle des quatre valeurs inférieure à
0.0ou supérieure à1.0lèveInvalidArgumentExceptionà la construction.INFet-INFsont rejetés par le même garde-fou. - Débordement de somme de bords.
x + widthouy + heightau-dessus de1.0 + 1e-9lèveInvalidArgumentException. Une somme dans la tolérance1e-9se construit avec succès. - Entrée
NAN. Le garde-fou de plage utilise des comparaisons ordonnées, et toute comparaison ordonnée avecNANest fausse ; un composantNANn’est donc pas rejeté. Une telle instance rapporte une aireNANet retournefalsedepuis les deux prédicats. Assainis les sources flottantes en amont avant la construction. - Boîtes d’aire nulle. Une boîte de largeur nulle ou de hauteur nulle ne chevauche jamais rien, pas même elle-même. Elle peut toutefois être contenue par une boîte non dégénérée. Tiens compte de cette asymétrie dans la logique d’intersection.
- Boîtes à bords jointifs. Deux boîtes qui ne partagent qu’un bord ou un coin ne se chevauchent pas ; le test d’intersection est strict.
- Asymétrie de tolérance d’inclusion. Une boîte intérieure dont le bord gauche ou haut sort de la boîte extérieure de la moindre quantité échoue à l’inclusion ; seuls les bords droit et bas reçoivent la marge
1e-9. - Mode FIPS. Ce module n’effectue aucune opération cryptographique ; le mode FIPS ne modifie pas son comportement.
Conformité
Section intitulée « Conformité »Ce module n’implémente aucune norme normative et ne formule aucune revendication de conformité. C’est une primitive géométrique validée. La sémantique de l’espace de coordonnées PDF pour les fonctionnalités qui la consomment est documentée sur les pages de ces fonctionnalités. NextPDF ne détient aucune certification et n’en accorde aucune ; le support n’est pas la conformité, et la conformité n’est pas la certification. Aucune restriction de contrôle à l’exportation ne s’applique à cette surface, et cette référence n’est pas un avis juridique.
Notes de développement
Section intitulée « Notes de développement »- La classe est disponible depuis
nextpdf/enterprise2.2.0 ; sa surface publique est inchangée en 3.1.0. - Convertis les coordonnées absolues de l’espace-page en fractions relatives à la page avant la construction. La classe valide la plage, pas la sémantique ; elle ne peut pas détecter une région plausible mais erronée.
- Les instances sont de simples objets-valeurs, peu coûteux à construire. Ne les mets ni en pool ni en cache.
- Deux instances aux coordonnées identiques sont égales sous l’égalité lâche (
==) ; l’identité stricte (===) les distingue. Préfère la comparaison de coordonnées dans les tests. - Pour de la géométrie au-delà des prédicats booléens, dérive les bords depuis les propriétés publiques : bord droit
x + width, bord basy + height. - Quand tu testes les frontières de tolérance, sonde les deux côtés de
1e-9sur le garde-fou de somme de bords et sur les comparaisons droit/bas de l’inclusion.
Frontière de publication
Section intitulée « Frontière de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface d’API publique prise en charge. Les chemins d’espaces de noms internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de tickets sont hors périmètre.