多欄版面¶
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,
);