Skip to content

Couleurs

TCPDF-Next fournit une gestion complète des couleurs via le trait HasColors, le value object Graphics\Color et l'abstraction Graphics\ColorSpace. Les couleurs s'appliquent indépendamment aux traits, remplissages et texte.

Définir les couleurs

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)      // Trait rouge
    ->setFillColor(0, 0, 255)      // Remplissage bleu
    ->setTextColor(51, 51, 51);    // Texte gris foncé

Signatures

php
setDrawColor(int $r, int $g = -1, int $b = -1): static   // Couleur de trait
setFillColor(int $r, int $g = -1, int $b = -1): static   // Couleur de remplissage
setTextColor(int $r, int $g = -1, int $b = -1): static   // Couleur de texte

Quand seul $r est fourni ($g et $b par défaut à -1), la valeur est traitée comme niveau de gris (0 = noir, 255 = blanc).

Value Object couleur

php
use Yeeefang\TcpdfNext\Graphics\Color;

$red  = Color::rgb(255, 0, 0);
$cyan = Color::cmyk(100, 0, 0, 0);
$gray = Color::gray(128);
$spot = Color::spot('Pantone 151 C', 0, 60, 100, 0);
Méthode FactoryParamètresEspace couleur
Color::rgb(r, g, b)0--255 par canalDeviceRGB
Color::cmyk(c, m, y, k)0--100 par canalDeviceCMYK
Color::gray(value)0--255DeviceGray
Color::spot(name, c, m, y, k)Nom + fallback CMYKSeparation

Espaces couleur

Espace couleurUsage
DeviceRGBSortie orientée écran (web, présentations)
DeviceCMYKSortie orientée impression (impression commerciale)
DeviceGrayDocuments en niveaux de gris
SeparationCouleurs Pantone/d'accompagnement pour impression précise de marque

Les valeurs CMYK sont écrites directement dans le flux PDF. Pour les workflows avec gestion des couleurs, intégrez un profil ICC via setColorProfile().

Transparence

php
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): static
php
$pdf->setAlpha(0.5, 'Multiply')    // 50% opacité, fusion Multiply
    ->rect(10, 10, 50, 30, 'F')
    ->setAlpha(1.0);                // Réinitialiser à complètement opaque

Réinitialisez toujours l'opacité après les sections transparentes pour éviter des effets non intentionnels sur le contenu suivant.

Modes de fusion

Les 16 modes de fusion PDF sont supportés :

ModeEffet
NormalSource sur destination (par défaut)
MultiplyAssombrit — multiplie les valeurs de canal
ScreenÉclaircit — multiplication inverse
OverlayCombine Multiply et Screen
Darken / LightenGarde la valeur plus foncée / plus claire par canal
ColorDodge / ColorBurnÉclaircit / assombrit la destination
HardLight / SoftLightEffet de lumière fort / subtil
Difference / ExclusionDifférence de canal (contraste haut / bas)
Hue / SaturationTeinte ou saturation source, luminosité destination
Color / LuminosityCouleur ou luminosité source

Dégradés

Quatre types de dégradés sont rendus comme objets de shading PDF natifs :

php
$pdf->linearGradient(10, 10, 100, 50, '#ff0000', '#0000ff', [0, 0, 1, 1]);   // Linéaire
$pdf->radialGradient(60, 60, 80, 80, '#ffffff', '#000000');                    // Radial
$pdf->coonsPatchMesh(10, 10, 100, 100, $colors, $coords);       // Coons patch mesh
$pdf->tensorProductPatchMesh(10, 10, 100, 100, $colors, $coords); // Tensor-product
  • Linéaire — dégradé deux couleurs le long d'un vecteur de direction.
  • Radial — dégradé deux couleurs s'expandant depuis un point central.
  • Coons patch mesh — remplissages multi-couleurs complexes définis par points de contrôle Bezier.
  • Tensor-product patch mesh — extension Coons avec points de contrôle intérieurs additionnels.

Exemple complet

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)       // Trait rouge
    ->setFillColor(0, 0, 255)       // Remplissage bleu
    ->rect(10, 10, 50, 30, 'DF')    // Draw + Fill
    ->setAlpha(0.5, 'Multiply')     // 50% opacité avec fusion Multiply
    ->setFillColor(255, 255, 0)     // Jaune
    ->rect(30, 20, 50, 30, 'F')     // Rectangle semi-transparent superposé
    ->setAlpha(1.0);                // Réinitialiser opacité

Conseils

  • Utilisez DeviceRGB pour les PDF à l'écran et DeviceCMYK pour l'impression commerciale.
  • Les couleurs d'accompagnement nécessitent SpotColorManager — il est initialisé paresseusement à la première utilisation.
  • Réinitialisez toujours alpha à 1.0 après les sections transparentes.
  • Les coordonnées de dégradé utilisent le système d'unité utilisateur actuel (par défaut : mm).

Distribué sous licence LGPL-3.0-or-later.