Aller au contenu
getnextpdf.com

Enterprise édition

Common — Référence détaillée

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.

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.

SymboleParamètresComportement par défautRetourneLève ou échoue avecNotes
BoundingBox::__constructfloat $x, float $y, float $width, float $heightValide chaque valeur par rapport à [0.0, 1.0], puis valide les deux sommes de bordsBoundingBoxInvalidArgumentException quand une valeur est hors plage ou qu’une somme de bords dépasse 1.0 + 1e-9Les quatre valeurs deviennent des propriétés public readonly
BoundingBox::areaaucunMultiplie width par heightfloatRien de déclaréRetourne 0.0 pour les boîtes dégénérées
BoundingBox::containsself $otherTeste si $other se trouve entièrement à l’intérieur de cette boîteboolRien de déclaréLes bords droit et bas tolèrent +1e-9 ; les bords gauche et haut comparent à l’exact
BoundingBox::overlapsself $otherTeste une intersection stricte de rectanglesboolRien de déclaréUn opérande d’aire nulle de l’un ou l’autre côté retourne false
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
}
  • Les quatre valeurs sont des fractions des dimensions de la page, normalisées dans la plage [0.0, 1.0].
  • x situe le bord gauche et y situe le bord haut de la boîte. x + width et y + height dé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).
  • Le constructeur est l’unique point de validation. Une coordonnée hors de [0.0, 1.0] lève InvalidArgumentException ; le message nomme le composant fautif et la valeur reçue.
  • Une somme de bords supérieure à 1.0 + 1e-9 lève InvalidArgumentException ; le message rapporte les deux opérandes et leur somme. La tolérance 1e-9 absorbe 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 une Error PHP et que la classe ne peut être étendue.
  • area() retourne width * height. C’est un calcul pur sans effet de bord.
  • contains() retourne true quand 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() retourne true sur 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 est false.
  • 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.

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.

  • Composant hors plage. N’importe laquelle des quatre valeurs inférieure à 0.0 ou supérieure à 1.0 lève InvalidArgumentException à la construction. INF et -INF sont rejetés par le même garde-fou.
  • Débordement de somme de bords. x + width ou y + height au-dessus de 1.0 + 1e-9 lève InvalidArgumentException. Une somme dans la tolérance 1e-9 se construit avec succès.
  • Entrée NAN. Le garde-fou de plage utilise des comparaisons ordonnées, et toute comparaison ordonnée avec NAN est fausse ; un composant NAN n’est donc pas rejeté. Une telle instance rapporte une aire NAN et retourne false depuis 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.

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.

  • La classe est disponible depuis nextpdf/enterprise 2.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 bas y + height.
  • Quand tu testes les frontières de tolérance, sonde les deux côtés de 1e-9 sur le garde-fou de somme de bords et sur les comparaisons droit/bas de l’inclusion.

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.