템플릿 (XObjects)
PDF Form XObjects -- TCPDF-Next에서 템플릿이라고 합니다 -- 는 콘텐츠 블록을 한 번 기록하고 원하는 수의 페이지에 스탬프할 수 있게 합니다. 이는 헤더, 푸터, 워터마크, 로고, 그리고 문서 전체에서 반복되는 모든 요소에 이상적입니다.
모든 메서드는 static을 반환하므로 모든 호출을 체이닝할 수 있습니다(startTemplate()는 템플릿 ID를 반환하는 것은 예외).
빠른 참조
| 메서드 | 용도 |
|---|---|
startTemplate() | 템플릿 기록 시작; 템플릿 ID 반환 |
endTemplate() | 기록 중지 |
printTemplate() | 기록된 템플릿을 현재 페이지에 배치 |
기본 예제
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
// 재사용 가능한 헤더 템플릿 생성
$tpl = $pdf->startTemplate(190, 20);
$pdf->setFont('Helvetica', 'B', 14)
->setTextColor(255, 102, 0)
->cell(0, 10, 'ACME Corp — Confidential', align: 'C')
->line(0, 18, 190, 18);
$pdf->endTemplate();
// 여러 페이지에서 템플릿 사용
$pdf->addPage()
->printTemplate($tpl, 10, 10)
->setFont('Helvetica', '', 12)
->setY(35)
->cell(0, 10, 'Page 1 content', newLine: true)
->addPage()
->printTemplate($tpl, 10, 10)
->setY(35)
->cell(0, 10, 'Page 2 content', newLine: true);startTemplate()
php
$tpl = $pdf->startTemplate(float $w = 0, float $h = 0): int새 템플릿 기록을 시작합니다. 이 호출 이후의 모든 그리기 작업은 페이지에 직접 렌더링되는 대신 템플릿에 캡처됩니다.
| 매개변수 | 유형 | 설명 |
|---|---|---|
$w | float | 사용자 단위의 템플릿 너비 (0 = 페이지 너비) |
$h | float | 사용자 단위의 템플릿 높이 (0 = 페이지 높이) |
나중에 템플릿을 참조하는 데 사용되는 정수 템플릿 ID를 반환합니다.
WARNING
템플릿을 기록하는 동안 addPage()를 호출하지 마십시오. 템플릿은 고정된 바운딩 박스 내에서 콘텐츠를 캡처합니다 -- 페이지가 아닙니다.
endTemplate()
기록을 중지하고 템플릿을 완성합니다. 이 호출 이후에 그려지는 콘텐츠는 다시 현재 페이지로 이동합니다.
printTemplate()
php
$pdf->printTemplate(int $id, float $x, float $y, float $w = 0, float $h = 0): static이전에 기록된 템플릿을 현재 페이지의 지정된 위치에 스탬프합니다.
| 매개변수 | 유형 | 설명 |
|---|---|---|
$id | int | startTemplate()가 반환한 템플릿 ID |
$x | float | 페이지에서의 X 위치 |
$y | float | 페이지에서의 Y 위치 |
$w | float | 표시 너비 (0 = 원래 템플릿 너비) |
$h | float | 표시 높이 (0 = 원래 템플릿 높이) |
$w와 $h를 변경하여 같은 템플릿을 다른 크기로 인쇄할 수 있습니다. 템플릿 콘텐츠가 맞게 크기 조정됩니다.
활용 사례
반복 헤더 / 푸터
php
$header = $pdf->startTemplate(190, 15);
$pdf->setFont('Helvetica', 'B', 10)
->cell(95, 10, 'Company Name', align: 'L')
->cell(95, 10, date('Y-m-d'), align: 'R');
$pdf->endTemplate();
for ($i = 1; $i <= 5; $i++) {
$pdf->addPage()
->printTemplate($header, 10, 10)
->setY(30)
->cell(0, 10, "Content for page {$i}", newLine: true);
}크기 조절된 로고
같은 템플릿을 다른 크기로 인쇄합니다:
php
$logo = $pdf->startTemplate(60, 20);
$pdf->image('/path/to/logo.png', 0, 0, 60, 20);
$pdf->endTemplate();
$pdf->addPage()
->printTemplate($logo, 10, 10, 60, 20) // 원래 크기
->printTemplate($logo, 10, 40, 30, 10); // 절반 크기팁
- 템플릿은 PDF Form XObjects로 저장됩니다 -- 몇 번 인쇄되든 콘텐츠는 한 번만 정의되어 파일 크기를 낮게 유지합니다.
- 템플릿은 텍스트, 이미지, 도형, 그리고 다른 템플릿까지 모든 그리기 가능한 콘텐츠를 포함할 수 있습니다.
- 템플릿 내부의 좌표 시스템은 바운딩 박스의 왼쪽 상단 모서리 (0, 0)에서 시작합니다.