跳轉到

多欄版面

ColumnLayout 提供報紙式多欄排版能力,文字內容自動在欄位之間流動,並在必要時跨頁延續。支援等寬欄、自訂欄寬比例、欄間距設定與欄間分隔線。

基本多欄設定

use NextPDF\Layout\ColumnLayout;
use NextPDF\Layout\ColumnConfig;

// 建立 2 欄等寬版面
$layout = $document->columns()->create(
    config: ColumnConfig::equal(
        count: 2,
        gutter: 8.0,  // 欄間距(mm)
    ),
);

// 在欄版面中渲染文字
$layout->text()->writeInColumn(
    column: 0,
    text: 'Left column content...',
    position: Position::top(),
);

$layout->text()->writeInColumn(
    column: 1,
    text: 'Right column content...',
    position: Position::top(),
);

自訂欄寬比例

// 1:2 欄寬比例(例如:側邊欄 + 主要內容)
$layout = $document->columns()->create(
    config: ColumnConfig::custom(
        widths: [60.0, 120.0],  // mm,總計 180mm(不含頁邊距)
        gutter: 8.0,
    ),
);

// 三欄(黃金比例)
$layout = $document->columns()->create(
    config: ColumnConfig::custom(
        widths: [45.0, 72.0, 45.0],
        gutter: 6.0,
    ),
);

自動內容流動

// 長篇文字自動在欄間流動
$layout->text()->flow(
    text: $longArticleText,
    startColumn: 0,
    style: FontStyle::create(fontFamily: 'Times-Roman', fontSize: 10.0),
    lineHeight: 1.4,
);

欄間分隔線

use NextPDF\Layout\ColumnRule;

$layout = $document->columns()->create(
    config: ColumnConfig::equal(
        count: 3,
        gutter: 10.0,
        rule: ColumnRule::create(
            width: 0.25,               // 線條寬度(mm)
            color: Color::gray(0.6),   // 60% 灰
            style: LineStyle::Solid,   // Solid | Dashed | Dotted
        ),
    ),
);

跨欄元素

// 標題跨越所有欄
$layout->text()->writeSpanning(
    text: 'Chapter 3: Architecture',
    style: FontStyle::create(fontFamily: 'Helvetica-Bold', fontSize: 16.0),
    spansAllColumns: true,
);

欄位平衡

// 強制平衡最後一組欄(等高)
$layout->balance();

參見