Skip to content

Layout (HasLayout)

Trait HasLayout và module Layout cung cấp cấu trúc cấp trang: header, footer, layout nhiều cột và chế độ booklet. Module bao gồm PageManager, ColumnManager, BookletManagerHeaderFooterManager.

Mọi method trả về static, nên mỗi lệnh gọi có thể chain.

Header có sẵn

php
use Yeeefang\TcpdfNext\Core\Document;

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

setHeaderData() chấp nhận đường dẫn logo, chiều rộng logo, chuỗi tiêu đề và chuỗi mô tả.

Callback tùy chỉnh

Để kiểm soát đầy đủ, đăng ký callback nhận instance 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');

Bật / Tắt

php
$pdf->setPrintHeader(false);  // Tắt render header
$pdf->setPrintFooter(false);  // Tắt render footer

Margin

php
$pdf->setHeaderMargin(float $margin);  // Khoảng cách trên header
$pdf->setFooterMargin(float $margin);  // Khoảng cách dưới footer

Các margin này định nghĩa khoảng cách giữa cạnh trang và nội dung header/footer.

Layout nhiều cột

Định nghĩa cột

php
$pdf = Document::create()
    ->addPage()
    ->setColumnsArray([
        ['w' => 90, 's' => 5],  // Cột 1: rộng 90mm, khoảng cách 5mm
        ['w' => 90, 's' => 0],  // Cột 2: rộng 90mm
    ])
    ->setColumn(0)
    ->setFont('Helvetica', '', 10)
    ->multiCell(0, 5, 'Nội dung cột trái...')
    ->setColumn(1)
    ->multiCell(0, 5, 'Nội dung cột phải...');

Mỗi mục định nghĩa cột với w (chiều rộng) và s (khoảng cách). Dùng setColumn() để chuyển giữa các cột.

Method cột

php
$pdf->setColumnsArray(array $columns);  // Định nghĩa cấu trúc cột
$pdf->setColumn(int $col);              // Chuyển sang cột (đếm từ 0)
$col = $pdf->getColumn();               // Lấy index cột hiện tại

Chế độ Booklet

Chế độ booklet luân phiên margin trong và ngoài để trang có thể gập và đóng bìa:

php
$pdf->setBooklet(bool $val, float $inner, float $outer);
Tham sốMô tả
$valtrue để bật, false để tắt
$innerMargin trong (gáy) tính bằng mm
$outerMargin ngoài (mép) tính bằng mm
php
$pdf = Document::create()
    ->setBooklet(true, 20, 10)
    ->addPage()   // Trang lẻ: margin trong bên trái
    ->cell(0, 10, 'Page 1 — wider left margin for binding')
    ->addPage()   // Trang chẵn: margin trong bên phải
    ->cell(0, 10, 'Page 2 — wider right margin for binding');

Hoán đổi margin xảy ra tự động mỗi lệnh gọi addPage().

Chọn công cụ Layout phù hợp

Nhu cầuGiải pháp
Branding nhất quán trên mỗi trangsetHeaderData() hoặc setHeaderCallback()
Số trang ở footersetFooterCallback() với getPage() / getNumPages()
Cột kiểu báosetColumnsArray() + setColumn()
Output booklet sẵn insetBooklet()
Bỏ header trên trang nhất địnhsetPrintHeader(false) trước addPage()

Phân phối theo giấy phép LGPL-3.0-or-later.