Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
書籍転載:PHPライブラリ&サンプル実践活用[厳選100]

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]

表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)

2014年8月19日

FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。

WINGSプロジェクト 山田 祥寛
  • このエントリーをはてなブックマークに追加

書籍転載について

 本コーナーは、技術評論社発行の書籍『PHPライブラリ&サンプル実践活用[厳選100]』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。

 

 『PHPライブラリ&サンプル実践活用[厳選100]』の詳細や購入は技術評論社のサイト目次ページをご覧ください。

ご注意

 本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。

 前項でFPDFの基本を理解したところで、FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて触れます。

  • 名称: FPDF
  • URL: http://www.fpdf.org/
  • インストール方法: include_path に配置
  • ファイル: japanese.php(fpdf.php)

リンクテキストの出力

 writeメソッドの第3引数に、リンク先を指定することでハイパーリンクを生成できます(リスト30-1、図30-1)。また、リンク文字列であることを明記するために、setTextColorメソッドで文字色を青に変更しています。引数には、赤、緑、青の強弱を0~255で指定します。

PHP
$pdf->setTextColor(0, 0, 255);
$pdf->write(18, sjis('サポートサイトはこちら'), 'http://www.wings.msn.to');
リスト30-1 link.php(抜粋)
図30-1 テキストがハイパーリンクに

図30-1 テキストがハイパーリンクに

画像の挿入

 imageメソッドを利用します(リスト30-2、図30-2)。引数の意味は、先頭から挿入先のX座標、Y座標、幅、高さです。

PHP
$pdf->image('http://www.web-deli.com/image/logo.gif', 100, 100, 90, 40);
リスト30-2 image.php(抜粋)
図30-2 指定された画像を貼り付け

図30-2 指定された画像を貼り付け

図形の描画

 rect/lineメソッドで、それぞれ矩形、線分を描画できます(リスト30-3)。それぞれの座標の意味は、図30-3も併せて参照してください。

 rectメソッドの末尾の引数「DF」はDraw(枠を描画)、Fill(塗りつぶし)を意味します。枠のみを描画したい場合は「D」、塗りつぶしだけしたい場合には「F」と指定してください。

 setDrawColor/setFillColorメソッドでは、それぞれボーダー色、塗りつぶし色を設定しています。

PHP
$pdf->setDrawColor(255, 0, 0);
$pdf->setFillColor(0, 255, 255);
$pdf->rect(50, 50, 30, 40, 'DF');
$pdf->line(90, 50, 140, 100);
リスト30-3 canvas.php(抜粋)
図30-3 矩形や直線を描画

表の挿入

 表組み(図30-4)を作成するには、cellメソッドで順にセルを出力していきます(リスト30-4)。

 引数には、幅、高さ、文字列、枠線の有無の順で指定します。枠線の有無は1(あり)、なし(0)の他、L(Left)、T(Top)、R(Right)、Bottom(B)の組み合わせでも設定できます。

PHP
try {
  $db = new PDO('mysql:dbname=phpmook;host=127.0.0.1;charset=utf8',
    'mookusr', 'mookpass');
  // booksテーブルの内容を配本日降順で取得
  $stt = $db->prepare('SELECT * FROM books ORDER BY published DESC');
  $stt->execute();
  // 結果セットを順に表組みに整形
  while ($row = $stt->fetch(PDO::FETCH_ASSOC)) {
    $pdf->cell(60, 14, sjis($row['isbn']), 1);
    $pdf->cell(105, 14, sjis($row['title']), 1);
    $pdf->cell(25, 14, sjis($row['price'].'円'), 1);
    $pdf->cell(40, 14, sjis($row['publish']), 1);
    $pdf->cell(40, 14, sjis($row['published']), 1);
    $pdf->ln(); // 新規行へ
  }
} catch (PDOException $e) {
  die($e->getMessage());
}
リスト30-4 table.php(抜粋)
図30-4 booksテーブル

booksテーブルのフィールドレイアウトについては、「【042】テンプレートでデータ加工や条件分岐/繰り返し処理を表現する」の表42-1を参照してください。

 行を区切り、新規行に移動するには、lnメソッドを呼び出してください。

※以下では、本稿の前後を合わせて5回分(第6回~第10回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
6. FuelPHPで画面を表示する/DBを利用する

FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
7. PDF文書を動的に生成する(FPDF)

PHPスクリプトからPDF文書を動的に生成できるFPDFの基本的な使い方を説明する。書籍転載の7本目(書籍内の番号は「29」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
8. 【現在、表示中】≫ 表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)

FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
9. 既存のPDF文書をもとに新たなPDF文書を生成する(FPDI)

FPDIを使って、既存のPDF文書をテンプレートとして引用する方法を説明する。書籍転載の9本目(書籍内の番号は「31」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
10. PDFファイルを読み込む/生成する(Zend_Pdf)

PDFファイルの読み込みや生成が容易にできるライブラリ「Zend¥Pdf」の基本的な使い方を説明する。書籍転載の10本目(書籍内の番号は「32」)。

サイトからのお知らせ

Twitterでつぶやこう!