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
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 oscuroFirmas
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 textoCuando 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
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 factory | Parámetros | Espacio de color |
|---|---|---|
Color::rgb(r, g, b) | 0--255 por canal | DeviceRGB |
Color::cmyk(c, m, y, k) | 0--100 por canal | DeviceCMYK |
Color::gray(value) | 0--255 | DeviceGray |
Color::spot(name, c, m, y, k) | Nombre + respaldo CMYK | Separation |
Espacios de color
| Espacio de color | Uso |
|---|---|
| DeviceRGB | Salida orientada a pantalla (web, presentaciones) |
| DeviceCMYK | Salida orientada a impresión (impresión comercial) |
| DeviceGray | Documentos en escala de grises |
| Separation | Colores 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
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): static$pdf->setAlpha(0.5, 'Multiply') // 50% de opacidad, fusión Multiply
->rect(10, 10, 50, 30, 'F')
->setAlpha(1.0); // Restablecer a completamente opacoSiempre 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:
| Modo | Efecto |
|---|---|
Normal | Fuente sobre destino (predeterminado) |
Multiply | Oscurece — multiplica valores de canal |
Screen | Aclara — multiplicación inversa |
Overlay | Combina Multiply y Screen |
Darken / Lighten | Mantiene valor más oscuro / más claro por canal |
ColorDodge / ColorBurn | Aclara / oscurece el destino |
HardLight / SoftLight | Efecto de luz fuerte / sutil |
Difference / Exclusion | Diferencia de canal (alto / bajo contraste) |
Hue / Saturation | Tono o saturación de la fuente, luminosidad del destino |
Color / Luminosity | Color o luminosidad de la fuente |
Degradados
Cuatro tipos de degradados se renderizan como objetos de sombreado nativos de PDF:
$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
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 opacidadConsejos
- 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.0después de secciones transparentes. - Las coordenadas de degradado usan el sistema de unidades de usuario actual (predeterminado: mm).