Skip to content

レイアウト(HasLayout)

HasLayout トレイトとLayoutモジュールは、ページレベルの構造を提供します:ヘッダー、フッター、マルチカラムレイアウト、ブックレットモード。このモジュールは PageManagerColumnManagerBookletManagerHeaderFooterManager で構成されています。

すべてのメソッドは 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()
フッターのページ番号setFooterCallback()getPage() / getNumPages()
新聞スタイルのカラムsetColumnsArray() + setColumn()
印刷用ブックレット出力setBooklet()
特定のページでヘッダーを非表示addPage() の前に setPrintHeader(false)

LGPL-3.0-or-later ライセンスの下で公開されています。