[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
段組み とは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'); ?>
これの実行結果は以下の通りです。(カラム幅が異なっていることが確認できます。)
コメント