Warna
TCPDF-Next menyediakan manajemen warna penuh melalui trait HasColors, value object Graphics\Color, dan abstraksi Graphics\ColorSpace. Warna berlaku secara independen untuk stroke, fill, dan teks.
Mengatur Warna
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setDrawColor(255, 0, 0) // Stroke merah
->setFillColor(0, 0, 255) // Fill biru
->setTextColor(51, 51, 51); // Teks abu-abu gelapSignature
php
setDrawColor(int $r, int $g = -1, int $b = -1): static // Warna stroke
setFillColor(int $r, int $g = -1, int $b = -1): static // Warna fill
setTextColor(int $r, int $g = -1, int $b = -1): static // Warna teksSaat hanya $r yang diberikan ($g dan $b default -1), nilai diperlakukan sebagai grayscale (0 = hitam, 255 = putih).
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);| Factory Method | Parameter | Color Space |
|---|---|---|
Color::rgb(r, g, b) | 0--255 per channel | DeviceRGB |
Color::cmyk(c, m, y, k) | 0--100 per channel | DeviceCMYK |
Color::gray(value) | 0--255 | DeviceGray |
Color::spot(name, c, m, y, k) | Nama + fallback CMYK | Separation |
Color Space
| Color Space | Penggunaan |
|---|---|
| DeviceRGB | Output berorientasi layar (web, presentasi) |
| DeviceCMYK | Output berorientasi cetak (percetakan komersial) |
| DeviceGray | Dokumen grayscale |
| Separation | Warna spot/Pantone untuk pencetakan akurat brand |
Nilai CMYK ditulis langsung ke PDF stream. Untuk workflow color-managed, embed profil ICC melalui setColorProfile().
Transparansi
php
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): staticphp
$pdf->setAlpha(0.5, 'Multiply') // Opasitas 50%, blend Multiply
->rect(10, 10, 50, 30, 'F')
->setAlpha(1.0); // Reset ke sepenuhnya opaqueSelalu reset opasitas setelah bagian transparan untuk mencegah efek yang tidak diinginkan pada konten selanjutnya.
Blend Mode
Semua 16 blend mode PDF didukung:
| Mode | Efek |
|---|---|
Normal | Source over destination (default) |
Multiply | Menggelapkan — mengalikan nilai channel |
Screen | Mencerahkan — inverse multiply |
Overlay | Menggabungkan Multiply dan Screen |
Darken / Lighten | Menyimpan nilai lebih gelap / lebih terang per channel |
ColorDodge / ColorBurn | Mencerahkan / menggelapkan destination |
HardLight / SoftLight | Efek cahaya kuat / halus |
Difference / Exclusion | Perbedaan channel (kontras tinggi / rendah) |
Hue / Saturation | Hue atau saturasi source, luminosity destination |
Color / Luminosity | Warna atau luminosity source |
Gradient
Empat tipe gradient di-render sebagai objek shading PDF native:
php
$pdf->linearGradient(10, 10, 100, 50, '#ff0000', '#0000ff', [0, 0, 1, 1]); // Linear
$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- Linear — gradient dua warna sepanjang vektor arah.
- Radial — gradient dua warna yang meluas dari titik pusat.
- Coons patch mesh — fill multi-warna kompleks didefinisikan oleh titik kontrol Bezier.
- Tensor-product patch mesh — ekstensi Coons dengan titik kontrol interior tambahan.
Contoh Lengkap
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setDrawColor(255, 0, 0) // Stroke merah
->setFillColor(0, 0, 255) // Fill biru
->rect(10, 10, 50, 30, 'DF') // Draw + Fill
->setAlpha(0.5, 'Multiply') // Opasitas 50% dengan blend Multiply
->setFillColor(255, 255, 0) // Kuning
->rect(30, 20, 50, 30, 'F') // Rect semi-transparan bertumpang tindih
->setAlpha(1.0); // Reset opasitasTips
- Gunakan DeviceRGB untuk PDF di layar dan DeviceCMYK untuk cetak komersial.
- Warna spot memerlukan
SpotColorManager— diinisialisasi secara lazy pada penggunaan pertama. - Selalu reset alpha ke
1.0setelah bagian transparan. - Koordinat gradient menggunakan sistem unit pengguna saat ini (default: mm).