Aller au contenu
getnextpdf.com

Référence des énumérations

Plusieurs méthodes de création de NextPDF prennent un enum typé plutôt qu’une chaîne ou un entier nu. L’énumération est le contrat : elle contraint l’argument à un ensemble fixe et valide, et l’IDE comme PHPStan rejettent toute valeur en dehors. Cette page est l’index de recherche des valeurs autorisées pour les énumérations que tu définis (ou reçois) via l’API publique Document et Config — plus une énumération de couleur de niveau moteur (RenderingIntent), incluse parce que ses cas font partie du contrat de couleur public et signalée comme étant de niveau moteur là où elle apparaît.

C’est le compagnon de la référence de configuration. Là où l’objet Config te dit quel bouton tourner, cette page te dit quelles valeurs ce bouton accepte. Chaque entrée liste le nom de classe pleinement qualifié (FQCN) de l’énumération, son type de support, la liste exacte des cas copiée depuis la source, et la méthode publique qui la prend.

Les énumérations profondes, internes au moteur (mise en page HTML/CSS, l’arbre syntaxique abstrait, la CLI, les internes du shaper) sont délibérément exclues — tu ne les définis jamais. Presque tout ce qui suit est une valeur que tu transmets via l’API publique ; la seule exception, RenderingIntent, est une énumération de couleur de niveau moteur sans setter public, listée pour être complet et étiquetée comme telle là où elle apparaît.

Les énumérations PHP existent sous deux formes, et la forme change la façon dont tu écris la valeur :

  • Une énumération avec support (enum X: string ou enum X: int) a une value scalaire pour chaque cas, donc elle fait l’aller-retour via X::from('...') / $case->value. La plupart des énumérations ici sont avec support.
  • Une énumération pure (enum X sans type de support) a des cas mais pas de valeur scalaire ; tu y fais toujours référence par cas (X::SomeCase). Seule UnderlineStyle est pure.

Dans les deux formes, tu passes le cas lui-même — par exemple $pdf->addPage(orientation: Orientation::Landscape). Le type de support ne compte que lorsque tu dois sérialiser le choix ou le relire depuis la configuration.

Géométrie de page portrait ou paysage. Passée quand tu ajoutes une page ; le moteur échange largeur et hauteur en conséquence.

PropriétéValeur
FQCNNextPDF\Contracts\Orientation
Supportstring
Défini viaDocument::addPage(?PageSize $size = null, Orientation $orientation = Orientation::Portrait)
CasValeur de support
Portrait'P'
Landscape'L'
use NextPDF\Contracts\Orientation;
use NextPDF\ValueObjects\PageSize;
$pdf->addPage(PageSize::a4(), Orientation::Landscape);

Comment un tracé ouvert se termine. ISO 32000-2:2020 §8.4.3.3.

PropriétéValeur
FQCNNextPDF\Graphics\LineCap
Supportint
Défini vial’objet de config LineStyle (new LineStyle(cap: ...)), appliqué avec Document::setLineStyle(LineStyle $style)
CasValeur de supportSignification
Butt0Extrémité carrée au point final, sans projection.
Round1Arc semi-circulaire au point final.
Square2Projection carrée s’étendant de la moitié de la largeur du trait au-delà du point final.

Comment deux segments tracés se rejoignent à un angle. ISO 32000-2:2020 §8.4.3.4.

PropriétéValeur
FQCNNextPDF\Graphics\LineJoin
Supportint
Défini vial’objet de config LineStyle (new LineStyle(join: ...)), appliqué avec Document::setLineStyle(LineStyle $style)
CasValeur de supportSignification
Miter0Angle vif prolongé jusqu’à la limite d’onglet.
Round1Arc circulaire joignant les bords extérieurs.
Bevel2Diagonale reliant les bords extérieurs.

LineCap et LineJoin ne sont pas passés directement à une méthode Document — ce sont des champs de l’objet valeur immuable NextPDF\Graphics\LineStyle, que tu remets ensuite à setLineStyle() :

use NextPDF\Graphics\{LineStyle, LineCap, LineJoin};
$style = new LineStyle(width: 1.5, cap: LineCap::Round, join: LineJoin::Bevel);
$pdf->setLineStyle($style);
$pdf->line(20, 20, 120, 20);

La fonction de fusion de transparence appliquée au dessin suivant. Les douze premiers cas sont séparables ; les quatre derniers sont les modes TSL non séparables. ISO 32000-2:2020 §11.3.5.

PropriétéValeur
FQCNNextPDF\Graphics\BlendMode
Supportstring
Défini viaDocument::setAlpha(float $alpha, BlendMode $mode = BlendMode::Normal)
CasValeur de supportCasValeur de support
Normal'Normal'HardLight'HardLight'
Multiply'Multiply'SoftLight'SoftLight'
Screen'Screen'Difference'Difference'
Overlay'Overlay'Exclusion'Exclusion'
Darken'Darken'Hue'Hue'
Lighten'Lighten'Saturation'Saturation'
ColorDodge'ColorDodge'Color'Color'
ColorBurn'ColorBurn'Luminosity'Luminosity'
use NextPDF\Graphics\BlendMode;
$pdf->setAlpha(0.6, BlendMode::Multiply);
$pdf->rect(20, 20, 80, 40, 'F');

Comment les couleurs hors gamme sont remappées pendant la conversion de couleur. Émis sous forme d’opérateur ri. ISO 32000-2:2020 §8.6.5.8 (Table 71).

Contrairement aux autres énumérations de cette page, RenderingIntent n’a aucun setter public Document ou Config — c’est une énumération de niveau moteur. Elle est appliquée directement sur le moteur de dessin interne (DrawingEngine::setRenderingIntent()), qui émet l’opérateur ri dans le flux de contenu courant. Nous la listons ici pour être complets parce que ses cas font partie du contrat de couleur public, mais elle ne fait pas partie de l’API de création destinée aux développeurs que documente le reste de cette page ; traite le moteur de dessin comme une classe interne plutôt que comme le point d’entrée que tu programmes.

PropriétéValeur
FQCNNextPDF\Graphics\RenderingIntent
Supportstring
Défini viaNiveau moteur uniquement — appliqué sur le moteur de dessin interne ; aucun setter public Document/Config.
CasValeur de supportSignification
RelativeColorimetric'RelativeColorimetric'Préserve les couleurs dans la gamme ; rogne celles hors gamme.
AbsoluteColorimetric'AbsoluteColorimetric'Préserve exactement les valeurs colorimétriques, y compris le blanc du papier.
Saturation'Saturation'Préserve une saturation vive au détriment de la teinte/luminance.
Perceptual'Perceptual'Préserve les relations visuelles ; compression de gamme douce.

Le profil de couleur d’espace de travail déclaré sur l’/OutputIntent du document. La valeur par défaut DeviceRGB préserve le comportement hérité « pas d’OutputIntent supplémentaire » ; sélectionner tout autre cas fait émettre par le rédacteur un OutputIntent /GTS_PDFX avec le profil ICC embarqué (ISO 32000-2:2020 §14.11.5). C’est une valeur Config, pas une méthode par appel — définis-la sur l’objet de configuration que tu passes au Document.

PropriétéValeur
FQCNNextPDF\Core\OutputColorProfile
Supportstring
Défini viaConfig::withOutputColorProfile(OutputColorProfile $profile) (le paramètre $outputColorProfile du constructeur de Config)
CasValeur de supportRemarques
DeviceRGB'device-rgb'Par défaut. Aucun OutputIntent supplémentaire émis.
Srgb'srgb'OutputIntent sRGB explicite (IEC 61966-2-1). Pas de gamme étendue.
DisplayP3'display-p3'Gamme étendue Display-P3 (D65).
Rec2020'rec2020'Gamme étendue ITU-R BT.2020 / Rec.2020.
A98RGB'a98-rgb'Adobe RGB 1998.
ProphotoRGB'prophoto-rgb'ProPhoto RGB / ROMM RGB (D50).
use NextPDF\Core\{Config, OutputColorProfile};
$config = (new Config())->withOutputColorProfile(OutputColorProfile::DisplayP3);

Si les glyphes sont remplis, tracés, détourés ou rendus de façon invisible (le mode invisible sous-tend les couches OCR cherchables). ISO 32000-2:2020 §9.3.6, Table 104.

PropriétéValeur
FQCNNextPDF\Content\TextRenderingMode
Supportint
Défini viaDocument::setTextRenderingMode(TextRenderingMode $mode)
CasValeur de supportSignification
Fill0Remplit les glyphes.
Stroke1Trace le contour des glyphes.
FillStroke2Remplit puis trace.
Invisible3Rend de façon invisible (couches OCR cherchables).
FillClip4Remplit et ajoute au tracé de détourage.
StrokeClip5Trace et ajoute au tracé de détourage.
FillStrokeClip6Remplit, trace et détoure.
Clip7Ajoute au tracé de détourage uniquement (pas de rendu visible).

Comment une décoration de soulignement est dessinée. C’est la seule énumération pure ici, donc tu y fais toujours référence par cas.

PropriétéValeur
FQCNNextPDF\Contracts\UnderlineStyle
Supportpure (pas de valeur de support)
Défini viaDocument::setUnderlineStyle(UnderlineStyle $style)
CasSignification
RectFillRectangle rempli sous la ligne de base (valeur par défaut compatible TCPDF).
StrokeLineLigne tracée sous la ligne de base (dessin de ligne sémantique).
use NextPDF\Content\TextRenderingMode;
use NextPDF\Contracts\UnderlineStyle;
$pdf->setTextRenderingMode(TextRenderingMode::Invisible); // OCR text layer
$pdf->setUnderlineStyle(UnderlineStyle::StrokeLine);

Le contrat de conformité au niveau du document : quelle partie ISO le rédacteur doit honorer, et si le balisage structurel est requis. La valeur par défaut Plain est une sortie PDF 2.0 non contrainte. ISO 14289-2:2024 (PDF/UA-2) et les parties PDF/A d’ISO 19005.

PropriétéValeur
FQCNNextPDF\Conformance\ConformanceMode
Supportstring
Défini viaDocument::setConformanceMode(ConformanceMode $mode) (issue de secours de plus bas niveau ; préfère enableTaggedPdf() pour PDF/UA-2 dans le cœur, ou enablePdfA() — Premium uniquement — pour PDF/A)
CasValeur de supportContrat
Plain'plain'PDF 2.0, non contraint (par défaut).
PdfUa1'pdfua1'ISO 14289-1 (Tagged PDF/UA-1).
PdfUa2'pdfua2'ISO 14289-2:2024 (Tagged PDF/UA-2).
PdfA2'pdfa2'ISO 19005-2 (PDF/A-2).
PdfA3'pdfa3'ISO 19005-3 (discriminateur de profil PDF/A-3).
PdfA3b'pdfa3b'ISO 19005-3 PDF/A-3b (Basic).
PdfA3u'pdfa3u'ISO 19005-3 PDF/A-3u (extractible en Unicode).
PdfA4'pdfa4'ISO 19005-4:2020 (discriminateur de profil PDF/A-4).
PdfA4e'pdfa4e'ISO 19005-4:2020 PDF/A-4e (Engineering).
PdfA4f'pdfa4f'ISO 19005-4:2020 PDF/A-4f (File attachments).

L’énumération porte des helpers de prédicat — isTagged(), isAccessibility(), isArchival() et pdfaPart() — pour que les barrières côté rédacteur branchent sur le mode plutôt que de le redériver.

Quels cas un build Core seul peut réellement utiliser. Le type enum liste chaque cas, mais lister un cas n’équivaut pas à pouvoir produire cette conformité depuis le cœur :

  • Core (sans paquet supplémentaire) : Plain, PdfUa1 et PdfUa2. Le chemin Tagged PDF / PDF/UA est intégré au cœur — enableTaggedPdf() sélectionne le chemin de création PDF/UA (PdfUa2 par défaut) et câble l’arbre de structure sans aucune vérification de licence.
  • Premium uniquement : chaque cas PDF/A (PdfA2, PdfA3, PdfA3b, PdfA3u, PdfA4, PdfA4e, PdfA4f). Une vraie sortie PDF/A est produite par enablePdfA(), qui est une fonctionnalité de niveau Premium (ADR-011) : elle exige le paquet nextpdf/pro et échoue de façon fermée avec une InvalidConfigException (« install the nextpdf/pro package ») quand ce paquet est absent.

setConformanceMode() est une issue de secours de plus bas niveau qui n’écrit que le champ discriminateur — elle n’installe pas la machinerie PDF/A. Définir un cas PdfA* à travers elle dans un build Core seul étiquette donc le document sans lui donner les garanties d’archivage que fournit enablePdfA(), donc les modes Premium uniquement ne doivent pas être utilisés dans un build Core seul. Utilise enableTaggedPdf() / enablePdfA() pour les vrais chemins de conformité, et prends le paquet Premium dès qu’un livrable PDF/A est requis.

use NextPDF\Conformance\ConformanceMode;
$pdf->setConformanceMode(ConformanceMode::PdfUa2);

La valeur /AFRelationship pour un fichier associé embarqué. Une valeur non conforme fait échouer la validation PDF/A-3 et PDF/A-4, donc l’énumération est le moyen sûr de la définir. ISO 32000-2:2020 §14.13.5 (Table 401).

PropriétéValeur
FQCNNextPDF\Navigation\AFRelationship
Supportstring
Défini viaDocument::embedFile(string $path, string $description = '', AFRelationship|string $afRelationship = AFRelationship::Unspecified)
CasValeur de supportUsage
Source'Source'Le document source à partir duquel le PDF a été produit.
Data'Data'Données brutes dont le PDF est dérivé (par ex. XML Factur-X / ZUGFeRD).
Alternative'Alternative'Présentation alternative (braille, sous-titres, SVG).
Supplement'Supplement'Matériel supplémentaire.
EncryptedPayload'EncryptedPayload'Un blob chiffré opaque que le PDF enveloppe.
FormData'FormData'Données de formulaire (XFDF, FDF, XML).
Schema'Schema'Schéma décrivant un fichier Data (XSD, JSON Schema). PDF 2.0.
Unspecified'Unspecified'Aucune relation spécifiée (par défaut).

embedFile() accepte soit le cas de l’énumération, soit son littéral de chaîne (avec ou sans barre oblique de tête), donc AFRelationship::Data et '/Data' sont équivalents. Passer le cas est le choix sûr du point de vue des types.

use NextPDF\Navigation\AFRelationship;
// e-invoice payload: declare the XML as the source data
$pdf->embedFile('invoice.xml', 'Factur-X invoice data', AFRelationship::Data);
  • Référence de configuration — l’objet Config dont ces énumérations contraignent les valeurs, y compris withOutputColorProfile().
  • Module GraphicsLineStyle, BlendMode, RenderingIntent et le moteur de dessin.
  • Module Typography — le rendu de texte et la décoration de soulignement.
  • Module Conformance — le discriminateur ConformanceMode et les chemins d’activation PDF/UA / PDF/A.
  • Module Navigation — les fichiers associés et le mécanisme /AF.
  • Index de référence — le point d’entrée du matériel de référence API, configuration et compatibilité.