값 객체
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);공개 읽기 전용 속성을 통해 개별 면에 접근합니다: $margin->top, $margin->right, $margin->bottom, $margin->left.
Position 및 Dimension
공개 읽기 전용 속성을 가진 간단한 좌표 및 크기 쌍입니다.
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() 같은 메서드는 새 인스턴스를 반환합니다 -- 원본을 절대 변경하지 않습니다. 이는 방어적 복사 없이 페이지, 스레드, 함수 경계 간에 값 객체를 안전하게 공유할 수 있게 합니다.