カラー
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--255 | DeviceRGB |
Color::cmyk(c, m, y, k) | チャンネルごとに0--100 | DeviceCMYK |
Color::gray(value) | 0--255 | DeviceGray |
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'): staticphp
$pdf->setAlpha(0.5, 'Multiply') // 50%の不透明度、Multiplyブレンド
->rect(10, 10, 50, 30, 'F')
->setAlpha(1.0); // 完全不透明にリセット後続のコンテンツへの意図しない効果を防ぐため、透過セクションの後は必ず不透明度をリセットしてください。
ブレンドモード
PDFの16種類すべてのブレンドモードがサポートされています:
| モード | 効果 |
|---|---|
Normal | ソースがデスティネーションの上(デフォルト) |
Multiply | 暗くする — チャンネル値を乗算 |
Screen | 明るくする — 逆乗算 |
Overlay | Multiplyと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)を使用します。