書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)
FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。
書籍転載について
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは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で指定します。
$pdf->setTextColor(0, 0, 255);
$pdf->write(18, sjis('サポートサイトはこちら'), 'http://www.wings.msn.to');
|
画像の挿入
imageメソッドを利用します(リスト30-2、図30-2)。引数の意味は、先頭から挿入先のX座標、Y座標、幅、高さです。
$pdf->image('http://www.web-deli.com/image/logo.gif', 100, 100, 90, 40);
|
図形の描画
rect/lineメソッドで、それぞれ矩形、線分を描画できます(リスト30-3)。それぞれの座標の意味は、図30-3も併せて参照してください。
rectメソッドの末尾の引数「DF」はDraw(枠を描画)、Fill(塗りつぶし)を意味します。枠のみを描画したい場合は「D」、塗りつぶしだけしたい場合には「F」と指定してください。
setDrawColor/setFillColorメソッドでは、それぞれボーダー色、塗りつぶし色を設定しています。
$pdf->setDrawColor(255, 0, 0);
$pdf->setFillColor(0, 255, 255);
$pdf->rect(50, 50, 30, 40, 'DF');
$pdf->line(90, 50, 140, 100);
|
表の挿入
表組み(図30-4)を作成するには、cellメソッドで順にセルを出力していきます(リスト30-4)。
引数には、幅、高さ、文字列、枠線の有無の順で指定します。枠線の有無は1(あり)、なし(0)の他、L(Left)、T(Top)、R(Right)、Bottom(B)の組み合わせでも設定できます。
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());
}
|
※booksテーブルのフィールドレイアウトについては、「【042】テンプレートでデータ加工や条件分岐/繰り返し処理を表現する」の表42-1を参照してください。
行を区切り、新規行に移動するには、lnメソッドを呼び出してください。
※以下では、本稿の前後を合わせて5回分(第6回~第10回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
6. FuelPHPで画面を表示する/DBを利用する
FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。
8. 【現在、表示中】≫ 表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)
FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。
10. PDFファイルを読み込む/生成する(Zend_Pdf)
PDFファイルの読み込みや生成が容易にできるライブラリ「Zend¥Pdf」の基本的な使い方を説明する。書籍転載の10本目(書籍内の番号は「32」)。