변환 (HasTransforms)
HasTransforms 트레이트는 이후의 드로잉 작업이 렌더링되는 방식을 수정하는 기하학적 변환을 제공합니다. 변환은 현재 변환 매트릭스(CTM)에서 작동하며, 효과를 격리하기 위해 startTransform() / stopTransform() 쌍으로 감싸야 합니다.
모든 메서드는 static을 반환하므로 모든 호출을 체이닝할 수 있습니다.
빠른 참조
| 메서드 | 효과 |
|---|---|
startTransform() | 그래픽 상태 저장 (CTM 푸시) |
stopTransform() | 그래픽 상태 복원 (CTM 팝) |
rotate() | 점을 중심으로 회전 |
scale() | 수평 및 수직 스케일 |
translate() | 좌표 원점 이동 |
skew() | X 및 Y 축을 따라 기울이기 |
mirrorH() | 수평 미러링 |
mirrorV() | 수직 미러링 |
mirrorP() | 점에 대한 미러링 |
mirrorL() | 임의의 선에 대한 미러링 |
기본 예제
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
// 회전된 텍스트
->startTransform()
->rotate(45, 105, 60)
->text(100, 55, 'Rotated 45°')
->stopTransform()
// 스케일된 사각형
->startTransform()
->scale(150, 150, 50, 150)
->rect(40, 140, 20, 20, 'DF')
->stopTransform()
// 미러링된 텍스트
->startTransform()
->mirrorH(105)
->text(100, 200, 'Mirrored')
->stopTransform();WARNING
변환은 항상 startTransform() / stopTransform() 쌍으로 감싸야 합니다. stopTransform()을 잊으면 이후 모든 작업에 대해 그래픽 상태가 수정된 채로 남습니다.
startTransform / stopTransform
$pdf->startTransform(); // 현재 그래픽 상태 푸시
// ... 변환이 적용된 드로잉 작업 ...
$pdf->stopTransform(); // 이전 상태 팝 및 복원이 호출은 중첩할 수 있습니다. 각 startTransform()은 새 상태를 스택에 푸시합니다.
rotate()
$pdf->rotate(float $angle, float $x = '', float $y = '');이후 콘텐츠를 점 (x, y)을 중심으로 $angle도만큼 반시계 방향으로 회전합니다. x와 y를 생략하면 현재 위치가 사용됩니다.
scale()
$pdf->scale(float $sx, float $sy, float $x = '', float $y = '');점 (x, y)를 기준으로 콘텐츠를 수평 $sx 퍼센트, 수직 $sy 퍼센트로 스케일합니다. 값 100은 변화 없음을 의미하고, 200은 크기를 두 배로 합니다.
translate()
$pdf->translate(float $tx, float $ty);좌표 원점을 수평 $tx, 수직 $ty만큼 이동합니다. 변환이 중지될 때까지 이후 모든 좌표가 이 양만큼 오프셋됩니다.
skew()
$pdf->skew(float $angleX, float $angleY, float $x = '', float $y = '');전단 변환을 적용합니다. $angleX는 X축을 따라, $angleY는 Y축을 따라 기울이며, 모두 도 단위입니다.
미러 메서드
$pdf->mirrorH(float $x = ''); // x에서 수직축에 대한 수평 미러링
$pdf->mirrorV(float $y = ''); // y에서 수평축에 대한 수직 미러링
$pdf->mirrorP(float $x = '', float $y = ''); // 점에 대한 미러링
$pdf->mirrorL(float $angle, float $x = '', float $y = ''); // (x, y)를 지나는 각도의 선에 대한 미러링$pdf->startTransform()
->mirrorH(105)
->setFont('Helvetica', '', 14)
->text(80, 50, 'Flipped horizontally')
->stopTransform();변환 결합
단일 블록 내에서 여러 변환을 쌓을 수 있습니다. 호출된 순서대로 적용됩니다.
$pdf->startTransform()
->translate(20, 20)
->rotate(30)
->scale(120, 120)
->rect(10, 10, 40, 20, 'DF')
->stopTransform();완전한 CTM 지원
고급 사용 사례의 경우 기저의 현재 변환 매트릭스에 완전히 접근할 수 있습니다. 6개 요소 매트릭스 [a, b, c, d, e, f]는 표준 PDF 변환 매트릭스에 매핑되며, 편의 메서드로 충분하지 않을 때 아핀 변환에 대한 완전한 제어를 제공합니다.