Skip to content

레이아웃 (HasLayout)

HasLayout 트레이트와 Layout 모듈은 페이지 수준의 구조를 제공합니다: 머리글, 바닥글, 다단 레이아웃, 소책자 모드. 이 모듈은 PageManager, ColumnManager, BookletManager, HeaderFooterManager로 구성됩니다.

모든 메서드는 static을 반환하므로 모든 호출을 체이닝할 수 있습니다.

머리글과 바닥글

내장 머리글

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setHeaderData('logo.png', 30, 'Company Name', 'Generated report — Confidential')
    ->setHeaderMargin(10)
    ->setFooterMargin(10)
    ->addPage();

setHeaderData()는 로고 경로, 로고 너비, 제목 문자열, 설명 문자열을 받습니다.

사용자 정의 콜백

완전한 제어를 위해 Document 인스턴스를 받는 콜백을 등록합니다:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create();

$pdf->setHeaderCallback(function (Document $doc) {
    $doc->setFont('Helvetica', 'B', 12)
        ->cell(0, 10, 'My Company — Confidential', align: 'C', newLine: true)
        ->line(10, 18, 200, 18);
});

$pdf->setFooterCallback(function (Document $doc) {
    $doc->setY(-15)
        ->setFont('Helvetica', '', 8)
        ->cell(0, 10, 'Page ' . $doc->getPage() . '/' . $doc->getNumPages(), align: 'C');
});

$pdf->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Content with custom header and footer');

활성화 / 비활성화

php
$pdf->setPrintHeader(false);  // 머리글 렌더링 억제
$pdf->setPrintFooter(false);  // 바닥글 렌더링 억제

여백

php
$pdf->setHeaderMargin(float $margin);  // 머리글 위 간격
$pdf->setFooterMargin(float $margin);  // 바닥글 아래 간격

이 여백은 페이지 가장자리와 머리글/바닥글 콘텐츠 사이의 간격을 정의합니다.

다단 레이아웃

단 정의

php
$pdf = Document::create()
    ->addPage()
    ->setColumnsArray([
        ['w' => 90, 's' => 5],  // 단 1: 90mm 너비, 5mm 간격
        ['w' => 90, 's' => 0],  // 단 2: 90mm 너비
    ])
    ->setColumn(0)
    ->setFont('Helvetica', '', 10)
    ->multiCell(0, 5, 'Left column content...')
    ->setColumn(1)
    ->multiCell(0, 5, 'Right column content...');

각 항목은 w(너비)와 s(간격)로 단을 정의합니다. setColumn()을 사용하여 단 사이를 전환합니다.

단 메서드

php
$pdf->setColumnsArray(array $columns);  // 단 구조 정의
$pdf->setColumn(int $col);              // 단 전환 (0부터 시작)
$col = $pdf->getColumn();               // 현재 단 인덱스 가져오기

소책자 모드

소책자 모드는 페이지를 접어서 제본할 수 있도록 안쪽과 바깥쪽 여백을 교대로 적용합니다:

php
$pdf->setBooklet(bool $val, float $inner, float $outer);
매개변수설명
$valtrue로 활성화, false로 비활성화
$inner안쪽(제본) 여백 (mm)
$outer바깥쪽(가장자리) 여백 (mm)
php
$pdf = Document::create()
    ->setBooklet(true, 20, 10)
    ->addPage()   // 홀수 페이지: 안쪽 여백이 왼쪽
    ->cell(0, 10, 'Page 1 — wider left margin for binding')
    ->addPage()   // 짝수 페이지: 안쪽 여백이 오른쪽
    ->cell(0, 10, 'Page 2 — wider right margin for binding');

여백 교체는 각 addPage() 호출 시 자동으로 이루어집니다.

적절한 레이아웃 도구 선택

필요해결책
모든 페이지에 일관된 브랜딩setHeaderData() 또는 setHeaderCallback()
바닥글의 페이지 번호getPage() / getNumPages()를 사용한 setFooterCallback()
신문 스타일 다단setColumnsArray() + setColumn()
인쇄 준비된 소책자 출력setBooklet()
특정 페이지에서 머리글 제거addPage() 전에 setPrintHeader(false)

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