Màu sắc
TCPDF-Next cung cấp quản lý màu đầy đủ qua trait HasColors, value object Graphics\Color và abstraction Graphics\ColorSpace. Màu áp dụng độc lập cho stroke, fill và văn bản.
Đặt màu
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setDrawColor(255, 0, 0) // Stroke đỏ
->setFillColor(0, 0, 255) // Fill xanh dương
->setTextColor(51, 51, 51); // Văn bản xám đậmSignature
php
setDrawColor(int $r, int $g = -1, int $b = -1): static // Màu stroke
setFillColor(int $r, int $g = -1, int $b = -1): static // Màu fill
setTextColor(int $r, int $g = -1, int $b = -1): static // Màu văn bảnKhi chỉ cung cấp $r ($g và $b mặc định -1), giá trị được xử lý dạng grayscale (0 = đen, 255 = trắng).
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 | Tham số | Không gian màu |
|---|---|---|
Color::rgb(r, g, b) | 0--255 mỗi kênh | DeviceRGB |
Color::cmyk(c, m, y, k) | 0--100 mỗi kênh | DeviceCMYK |
Color::gray(value) | 0--255 | DeviceGray |
Color::spot(name, c, m, y, k) | Tên + CMYK fallback | Separation |
Không gian màu
| Không gian màu | Sử dụng |
|---|---|
| DeviceRGB | Output hướng màn hình (web, thuyết trình) |
| DeviceCMYK | Output hướng in (in thương mại) |
| DeviceGray | Tài liệu grayscale |
| Separation | Spot/Pantone color cho in chính xác thương hiệu |
Giá trị CMYK được ghi trực tiếp vào PDF stream. Cho workflow quản lý màu, nhúng ICC profile qua setColorProfile().
Transparency
php
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): staticphp
$pdf->setAlpha(0.5, 'Multiply') // Opacity 50%, blend Multiply
->rect(10, 10, 50, 30, 'F')
->setAlpha(1.0); // Reset về đục hoàn toànLuôn reset opacity sau phần trong suốt để tránh hiệu ứng không mong muốn trên nội dung tiếp theo.
Blend Mode
Tất cả 16 PDF blend mode được hỗ trợ:
| Mode | Hiệu ứng |
|---|---|
Normal | Source trên destination (mặc định) |
Multiply | Tối hơn — nhân giá trị kênh |
Screen | Sáng hơn — nhân ngược |
Overlay | Kết hợp Multiply và Screen |
Darken / Lighten | Giữ giá trị tối/sáng hơn mỗi kênh |
ColorDodge / ColorBurn | Sáng/tối destination |
HardLight / SoftLight | Hiệu ứng ánh sáng mạnh/nhẹ |
Difference / Exclusion | Chênh lệch kênh (contrast cao/thấp) |
Hue / Saturation | Hue/saturation source, luminosity destination |
Color / Luminosity | Color/luminosity source |
Gradient
Bốn loại gradient được render dạng PDF shading object 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 hai màu theo vector hướng.
- Radial — gradient hai màu mở rộng từ điểm trung tâm.
- Coons patch mesh — fill nhiều màu phức tạp qua điểm điều khiển Bezier.
- Tensor-product patch mesh — mở rộng Coons với điểm điều khiển nội bộ thêm.
Mẹo
- Dùng DeviceRGB cho PDF hiển thị màn hình và DeviceCMYK cho in thương mại.
- Spot color cần
SpotColorManager— được khởi tạo lười khi dùng lần đầu. - Luôn reset alpha về
1.0sau phần trong suốt. - Tọa độ gradient dùng hệ đơn vị người dùng hiện tại (mặc định: mm).