値オブジェクト
TCPDF-Nextは、すべての幾何学的および色彩データにイミュータブル(不変)な値オブジェクトを使用します。すべての値オブジェクトは final readonly として宣言されており、作成後は変更できません。既存のインスタンスを変更する代わりに、新しいインスタンスを作成してください。
PageSize
ページの寸法をポイント単位で表します(1 pt = 1/72 インチ)。
php
use Yeeefang\TcpdfNext\ValueObjects\PageSize;
// ISO 216 Aシリーズ
$a4 = PageSize::A4(); // 595.28 x 841.89 pt
// 向きの切り替え(新しいインスタンスを返す)
$landscape = PageSize::A4()->landscape(); // 841.89 x 595.28 pt
$portrait = PageSize::A4()->portrait(); // 595.28 x 841.89 pt
// 文字列名から
$letter = PageSize::fromName('Letter');
// ポイント単位のカスタムサイズ
$custom = new PageSize(400.0, 600.0, 'custom');ファクトリメソッド
| シリーズ | メソッド |
|---|---|
| ISO A | A0()、A1()、A2()、A3()、A4()、A5()、A6() |
| ISO B | B0()、B1()、B2()、B3()、B4()、B5() |
| 北米 | Letter()、Legal()、Tabloid() |
Margin
ページマージンをミリメートル単位で定義します。
php
use Yeeefang\TcpdfNext\ValueObjects\Margin;
// 四辺すべて同じ値
$uniform = Margin::uniform(10.0); // 全辺10mm
// 対称:垂直と水平
$symmetric = Margin::symmetric(15.0, 10.0); // 上下15mm、左右10mm
// マージンなし
$zero = Margin::zero();
// 明示的:上、右、下、左
$explicit = new Margin(20.0, 15.0, 25.0, 15.0);パブリックreadonlyプロパティで各辺にアクセスできます:$margin->top、$margin->right、$margin->bottom、$margin->left。
PositionとDimension
パブリックreadonlyプロパティを持つシンプルな座標とサイズのペアです。
php
use Yeeefang\TcpdfNext\ValueObjects\{Position, Dimension};
$pos = new Position(50.0, 100.0); // $pos->x, $pos->y
$dim = new Dimension(210.0, 297.0); // $dim->width, $dim->heightUnit
単位の定義とポイント、ミリメートル、センチメートル、インチ間の変換を処理します。
php
use Yeeefang\TcpdfNext\ValueObjects\Unit;
$mm = Unit::mm(); // その他: Unit::pt(), Unit::cm(), Unit::in()
// 単位間の変換
$points = Unit::convert(25.4, Unit::mm(), Unit::pt()); // 25.4mm = 72pt
$inches = Unit::convert(72.0, Unit::pt(), Unit::in()); // 72pt = 1in変換リファレンス
| 元の単位 | ポイントに変換 |
|---|---|
| 1 pt | 1.0 |
| 1 mm | 2.8346 |
| 1 cm | 28.3465 |
| 1 in | 72.0 |
Color
Color クラスはGraphics名前空間に存在し、RGB、CMYK、グレースケール、およびスポットカラーモデルをサポートしています。他のすべての値オブジェクトと同様にイミュータブルです。
php
use Yeeefang\TcpdfNext\Graphics\Color;
// RGB (0-255)
$red = Color::rgb(255, 0, 0);
$orange = Color::rgb(255, 102, 0);
// CMYK (0-100)
$processBlack = Color::cmyk(0, 0, 0, 100);
$cyan = Color::cmyk(100, 0, 0, 0);
// グレースケール (0-255、0 = 黒、255 = 白)
$gray = Color::gray(128);
// スポットカラー (名前 + CMYKフォールバック)
$pantone = Color::spot('Pantone 151 C', 0, 60, 100, 0);すべてを組み合わせる
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\ValueObjects\{PageSize, Margin, Unit};
use Yeeefang\TcpdfNext\Graphics\Color;
$landscape = PageSize::A4()->landscape();
$margins = Margin::symmetric(15.0, 10.0);
$orange = Color::rgb(255, 102, 0);
$pdf = Document::create()
->addPage($landscape, margin: $margins)
->setFont('Helvetica', '', 12)
->setTextColor($orange)
->cell(0, 10, 'Styled with value objects')
->save('styled.pdf');すべての値オブジェクトは final readonly です。landscape() や portrait() のようなメソッドは新しいインスタンスを返します。元のインスタンスを変更することはありません。これにより、値オブジェクトは防御的コピーなしに、ページ間、スレッド間、関数境界を越えて安全に共有できます。