Skip to content

템플릿 (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

새 템플릿 기록을 시작합니다. 이 호출 이후의 모든 그리기 작업은 페이지에 직접 렌더링되는 대신 템플릿에 캡처됩니다.

매개변수유형설명
$wfloat사용자 단위의 템플릿 너비 (0 = 페이지 너비)
$hfloat사용자 단위의 템플릿 높이 (0 = 페이지 높이)

나중에 템플릿을 참조하는 데 사용되는 정수 템플릿 ID를 반환합니다.

WARNING

템플릿을 기록하는 동안 addPage()를 호출하지 마십시오. 템플릿은 고정된 바운딩 박스 내에서 콘텐츠를 캡처합니다 -- 페이지가 아닙니다.

endTemplate()

기록을 중지하고 템플릿을 완성합니다. 이 호출 이후에 그려지는 콘텐츠는 다시 현재 페이지로 이동합니다.

printTemplate()

php
$pdf->printTemplate(int $id, float $x, float $y, float $w = 0, float $h = 0): static

이전에 기록된 템플릿을 현재 페이지의 지정된 위치에 스탬프합니다.

매개변수유형설명
$idintstartTemplate()가 반환한 템플릿 ID
$xfloat페이지에서의 X 위치
$yfloat페이지에서의 Y 위치
$wfloat표시 너비 (0 = 원래 템플릿 너비)
$hfloat표시 높이 (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)에서 시작합니다.

LGPL-3.0-or-later 라이선스로 배포됩니다.