レイアウト(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);| パラメータ | 説明 |
|---|---|
$val | true で有効化、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) |