Skip to content

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 đậm

Signature

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ản

Khi chỉ cung cấp $r ($g$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 MethodTham sốKhông gian màu
Color::rgb(r, g, b)0--255 mỗi kênhDeviceRGB
Color::cmyk(c, m, y, k)0--100 mỗi kênhDeviceCMYK
Color::gray(value)0--255DeviceGray
Color::spot(name, c, m, y, k)Tên + CMYK fallbackSeparation

Không gian màu

Không gian màuSử dụng
DeviceRGBOutput hướng màn hình (web, thuyết trình)
DeviceCMYKOutput hướng in (in thương mại)
DeviceGrayTài liệu grayscale
SeparationSpot/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'): static
php
$pdf->setAlpha(0.5, 'Multiply')    // Opacity 50%, blend Multiply
    ->rect(10, 10, 50, 30, 'F')
    ->setAlpha(1.0);                // Reset về đục hoàn toàn

Luô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ợ:

ModeHiệu ứng
NormalSource trên destination (mặc định)
MultiplyTối hơn — nhân giá trị kênh
ScreenSáng hơn — nhân ngược
OverlayKết hợp Multiply và Screen
Darken / LightenGiữ giá trị tối/sáng hơn mỗi kênh
ColorDodge / ColorBurnSáng/tối destination
HardLight / SoftLightHiệu ứng ánh sáng mạnh/nhẹ
Difference / ExclusionChênh lệch kênh (contrast cao/thấp)
Hue / SaturationHue/saturation source, luminosity destination
Color / LuminosityColor/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.0 sau 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).

Phân phối theo giấy phép LGPL-3.0-or-later.