Skip to content

Colores

TCPDF-Next proporciona gestión de color completa a través del trait HasColors, el value object Graphics\Color y la abstracción Graphics\ColorSpace. Los colores se aplican de forma independiente a trazos, rellenos y texto.

Establecer colores

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)      // Trazo rojo
    ->setFillColor(0, 0, 255)      // Relleno azul
    ->setTextColor(51, 51, 51);    // Texto gris oscuro

Firmas

php
setDrawColor(int $r, int $g = -1, int $b = -1): static   // Color de trazo
setFillColor(int $r, int $g = -1, int $b = -1): static   // Color de relleno
setTextColor(int $r, int $g = -1, int $b = -1): static   // Color de texto

Cuando solo se proporciona $r ($g y $b tienen valor predeterminado -1), el valor se trata como escala de grises (0 = negro, 255 = blanco).

Value Object Color

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étodo factoryParámetrosEspacio de color
Color::rgb(r, g, b)0--255 por canalDeviceRGB
Color::cmyk(c, m, y, k)0--100 por canalDeviceCMYK
Color::gray(value)0--255DeviceGray
Color::spot(name, c, m, y, k)Nombre + respaldo CMYKSeparation

Espacios de color

Espacio de colorUso
DeviceRGBSalida orientada a pantalla (web, presentaciones)
DeviceCMYKSalida orientada a impresión (impresión comercial)
DeviceGrayDocumentos en escala de grises
SeparationColores spot/Pantone para impresión con precisión de marca

Los valores CMYK se escriben directamente en el stream PDF. Para flujos de trabajo con gestión de color, incrusta un perfil ICC a través de setColorProfile().

Transparencia

php
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): static
php
$pdf->setAlpha(0.5, 'Multiply')    // 50% de opacidad, fusión Multiply
    ->rect(10, 10, 50, 30, 'F')
    ->setAlpha(1.0);                // Restablecer a completamente opaco

Siempre restablece la opacidad después de las secciones transparentes para evitar efectos no deseados en el contenido posterior.

Modos de fusión

Los 16 modos de fusión PDF están soportados:

ModoEfecto
NormalFuente sobre destino (predeterminado)
MultiplyOscurece — multiplica valores de canal
ScreenAclara — multiplicación inversa
OverlayCombina Multiply y Screen
Darken / LightenMantiene valor más oscuro / más claro por canal
ColorDodge / ColorBurnAclara / oscurece el destino
HardLight / SoftLightEfecto de luz fuerte / sutil
Difference / ExclusionDiferencia de canal (alto / bajo contraste)
Hue / SaturationTono o saturación de la fuente, luminosidad del destino
Color / LuminosityColor o luminosidad de la fuente

Degradados

Cuatro tipos de degradados se renderizan como objetos de sombreado nativos de PDF:

php
$pdf->linearGradient(10, 10, 100, 50, '#ff0000', '#0000ff', [0, 0, 1, 1]);   // Lineal
$pdf->radialGradient(60, 60, 80, 80, '#ffffff', '#000000');                    // Radial
$pdf->coonsPatchMesh(10, 10, 100, 100, $colors, $coords);       // Malla Coons patch
$pdf->tensorProductPatchMesh(10, 10, 100, 100, $colors, $coords); // Tensor-product
  • Lineal — degradado de dos colores a lo largo de un vector de dirección.
  • Radial — degradado de dos colores expandiéndose desde un punto central.
  • Malla Coons patch — rellenos multi-color complejos definidos por puntos de control Bezier.
  • Malla tensor-product patch — extensión de Coons con puntos de control interiores adicionales.

Ejemplo completo

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)       // Trazo rojo
    ->setFillColor(0, 0, 255)       // Relleno azul
    ->rect(10, 10, 50, 30, 'DF')    // Dibujar + Rellenar
    ->setAlpha(0.5, 'Multiply')     // 50% de opacidad con fusión Multiply
    ->setFillColor(255, 255, 0)     // Amarillo
    ->rect(30, 20, 50, 30, 'F')     // Rectángulo semi-transparente superpuesto
    ->setAlpha(1.0);                // Restablecer opacidad

Consejos

  • Usa DeviceRGB para PDFs en pantalla y DeviceCMYK para impresión comercial.
  • Los colores spot requieren SpotColorManager — se inicializa de forma perezosa en el primer uso.
  • Siempre restablece alpha a 1.0 después de secciones transparentes.
  • Las coordenadas de degradado usan el sistema de unidades de usuario actual (predeterminado: mm).

Distribuido bajo la licencia LGPL-3.0-or-later.