Skip to content

カラー

TCPDF-Nextは、HasColors トレイト、Graphics\Color 値オブジェクト、および Graphics\ColorSpace 抽象化を通じて完全なカラー管理を提供します。カラーはストローク、塗りつぶし、テキストにそれぞれ独立して適用されます。

カラーの設定

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)      // 赤のストローク
    ->setFillColor(0, 0, 255)      // 青の塗りつぶし
    ->setTextColor(51, 51, 51);    // ダークグレーのテキスト

シグネチャ

php
setDrawColor(int $r, int $g = -1, int $b = -1): static   // ストロークカラー
setFillColor(int $r, int $g = -1, int $b = -1): static   // 塗りつぶしカラー
setTextColor(int $r, int $g = -1, int $b = -1): static   // テキストカラー

$r のみを指定した場合($g$b はデフォルト -1)、その値はグレースケールとして扱われます(0 = 黒、255 = 白)。

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);
ファクトリメソッドパラメータ色空間
Color::rgb(r, g, b)チャンネルごとに0--255DeviceRGB
Color::cmyk(c, m, y, k)チャンネルごとに0--100DeviceCMYK
Color::gray(value)0--255DeviceGray
Color::spot(name, c, m, y, k)名前 + CMYKフォールバックSeparation

色空間

色空間用途
DeviceRGB画面向け出力(Web、プレゼンテーション)
DeviceCMYK印刷向け出力(商業印刷)
DeviceGrayグレースケールドキュメント
Separationブランド正確な印刷のためのスポット/Pantoneカラー

CMYK値はPDFストリームに直接書き込まれます。カラーマネジメントワークフローには、setColorProfile() でICCプロファイルを埋め込んでください。

透過

php
setAlpha(float $opacity = 1.0, string $blendMode = 'Normal'): static
php
$pdf->setAlpha(0.5, 'Multiply')    // 50%の不透明度、Multiplyブレンド
    ->rect(10, 10, 50, 30, 'F')
    ->setAlpha(1.0);                // 完全不透明にリセット

後続のコンテンツへの意図しない効果を防ぐため、透過セクションの後は必ず不透明度をリセットしてください。

ブレンドモード

PDFの16種類すべてのブレンドモードがサポートされています:

モード効果
Normalソースがデスティネーションの上(デフォルト)
Multiply暗くする — チャンネル値を乗算
Screen明るくする — 逆乗算
OverlayMultiplyとScreenの組み合わせ
Darken / Lightenチャンネルごとに暗い/明るい値を保持
ColorDodge / ColorBurnデスティネーションを明るく/暗くする
HardLight / SoftLight強い/微妙な光効果
Difference / Exclusionチャンネル差分(高/低コントラスト)
Hue / Saturationソースの色相または彩度、デスティネーションの輝度
Color / Luminosityソースの色または輝度

グラデーション

4種類のグラデーションがネイティブPDFシェーディングオブジェクトとしてレンダリングされます:

php
$pdf->linearGradient(10, 10, 100, 50, '#ff0000', '#0000ff', [0, 0, 1, 1]);   // 線形
$pdf->radialGradient(60, 60, 80, 80, '#ffffff', '#000000');                    // 放射状
$pdf->coonsPatchMesh(10, 10, 100, 100, $colors, $coords);       // Coonsパッチメッシュ
$pdf->tensorProductPatchMesh(10, 10, 100, 100, $colors, $coords); // テンソル積
  • 線形 — 方向ベクトルに沿った2色のグラデーション。
  • 放射状 — 中心点から拡がる2色のグラデーション。
  • Coonsパッチメッシュ — ベジェ制御点で定義される複雑な多色塗りつぶし。
  • テンソル積パッチメッシュ — 追加の内部制御点を持つCoons拡張。

完全な例

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)       // 赤のストローク
    ->setFillColor(0, 0, 255)       // 青の塗りつぶし
    ->rect(10, 10, 50, 30, 'DF')    // 描画 + 塗りつぶし
    ->setAlpha(0.5, 'Multiply')     // 50%の不透明度、Multiplyブレンド
    ->setFillColor(255, 255, 0)     // 黄色
    ->rect(30, 20, 50, 30, 'F')     // 重なる半透明矩形
    ->setAlpha(1.0);                // 不透明度をリセット

ヒント

  • 画面表示用PDFにはDeviceRGBを、商業印刷にはDeviceCMYKを使用してください。
  • スポットカラーには SpotColorManager が必要です — 初回使用時に遅延初期化されます。
  • 透過セクションの後は必ずalphaを 1.0 にリセットしてください。
  • グラデーション座標は現在のユーザー単位系(デフォルト:mm)を使用します。

LGPL-3.0-or-later ライセンスの下で公開されています。