段組み とは1ページの中で複数の列に分けて、テキストを左の列から右方向へ順次出力することを言います。
以下の画像は 段組み のテストとして、ワードで作成した3段組のものです。
この様な段組みが TCPDF では簡単にできますので、この説明を行っていきます。
TCPDF での 段組み は AddPage メソッドを実行後に、「カラム定義の設定」「開始カラムの指定」を行い、 テキストの文字列を Write メソッドを実行すれば実現します。
取敢えず 段組み に必要な各種のメソッドに付いて以下に記します。
// // 同一幅の段組み設定 public function setEqualColumns($numcols=0, $width=0, $y=null) // $numcols : カラム数(「0」設定で段組みを不可指定) // $width : カラム幅 // $y : カラム開始Y座標(「null」であれば現在位置から出力) // 段組みのカラムを削除 public function resetColumns() // カラム定義を配列で設定 public function setColumnsArray($columns) // $columns : カラム定義配列 // $columns[]['w'] : カラム幅 // $columns[]['s'] : カラムの空白幅 // $columns[]['y'] : カラムの先頭位置 // 開始カラムの選択 public function selectColumn($col=null) // $col : カラム番号(番号は「0」から始まる、「null」の場合は現在のカラム) // 現在カラムの取得 public function getColumn() // 現在のカラム数の取得 public function getNumberOfColumns() //
■段組みでのテキストデータ表示
表示を行うテキストデータは「test-mul-col.txt」として同一ディレクトリ内に設定しておきます。
AddPage メソッドを実行後に、resetColumns メソッドでカラムをリセットし、「カラム定義の設定」を setEqualColumns メソッドで カラム数は「3」で幅は「60mm」を指定します。
その後「開始カラムの指定」を selectColumn メソッドで「0」カラムから出力する様に指定します。
テキスト文字列の出力は file_get_contents メソッドでテキストファイルの内容を読込んで Write メソッドを実行します。
<?php
require_once('../tcpdf/tcpdf.php');
// TCPDFクラス生成
$pdf = new TCPDF();
// デフォルトで用意されている日本語フォント[小塚ゴシックPro M]
$strFont = "kozgopromedium";
// ヘッダ・フッタ出力設定
$pdf->setPrintHeader(true);
$pdf->setPrintFooter(true);
// 本文の日本語フォント[小塚ゴシックPro M]
$pdf->SetFont($strFont, "", 12);
// 新規ページの追加
$pdf->AddPage();
// カラム制御をリセット
$pdf->resetColumns();
// カラム定義の設定(3カラムで、幅は60mm)
$pdf->setEqualColumns(3, 60);
// カラム定義の指定
$pdf->selectColumn(0);
// 外部テキストファイルの読込
$content = file_get_contents('test-mul-col.txt', false);
// テキスト色
$pdf->setTextColor(50, 50, 50);
// 内容を出力
$pdf->Write(0, $content, '', 0, 'J', true, 0, false, true, 0);
// pdf表示設定
$pdf->Output('pdf-mul-col-1-1.pdf', 'I');
?>
これの実行結果は以下の通りです。(ワードの出力とはフォントの違いなどから若干の表示が異なります。)
上記のソースで setEqualColumns メソッドでは同じカラム幅なのでこのメソッドを用いましたが、 その部分を以下の様に setColumnsArray メソッドで置き換えができます。
// カラム定義の設定(3カラムで、幅は60mm)
//$pdf->setEqualColumns(3, 60);
// [setColumnsArray]に置き換え
$columns = [
['w' => 60, 's' => 0, 'y' => 10],
['w' => 60, 's' => 0, 'y' => 10],
['w' => 60, 's' => 0, 'y' => 10]
];
$pdf->setColumnsArray($columns);
//
この方式で、3カラムの幅が異なる例をテストしてみます。
<?php
require_once('../tcpdf/tcpdf.php');
// TCPDFクラス生成
$pdf = new TCPDF();
// デフォルトで用意されている日本語フォント[小塚ゴシックPro M]
$strFont = "kozgopromedium";
// ヘッダ・フッタ出力設定
$pdf->setPrintHeader(true);
$pdf->setPrintFooter(true);
// 本文の日本語フォント[小塚ゴシックPro M]
$pdf->SetFont($strFont, "", 12);
// 新規ページの追加
$pdf->AddPage();
// カラム制御をリセット
$pdf->resetColumns();
// カラム定義の設定
$columns = [
['w' => 30, 's' => 0, 'y' => 10],
['w' => 60, 's' => 0, 'y' => 10],
['w' => 90, 's' => 0, 'y' => 10]
];
$pdf->setColumnsArray($columns);
// カラム定義の指定
$pdf->selectColumn(0);
// 外部テキストファイルの読込
$content = file_get_contents('test-mul-col.txt', false);
// テキスト色
$pdf->setTextColor(50, 50, 50);
// 内容を出力
$pdf->Write(0, $content, '', 0, 'J', true, 0, false, true, 0);
// pdf表示設定
$pdf->Output('pdf-mul-col-1-1.pdf', 'I');
?>
これの実行結果は以下の通りです。(カラム幅が異なっていることが確認できます。)
コメント