書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
PDF文書を動的に生成する(FPDF)
PHPスクリプトからPDF文書を動的に生成できるFPDFの基本的な使い方を説明する。書籍転載の7本目(書籍内の番号は「29」)。
書籍転載について
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
FPDFを利用することで、PDF(Portable Document Format)形式の文書をPHPスクリプトから動的に生成できます。日本語にも対応しており、「【031】既存のPDF文書をもとに新たなPDF文書を生成する」で説明するFPDIを併用することで、既存のPDF文書をもとに新たな文書を生成できるのも大きなメリットです。
- 名称: FPDF
- URL: http://www.fpdf.org/
- インストール方法: include_path に配置
- ファイル: japanese.php(fpdf.php)
インストール
FPDFを利用するには、FPDF本体に加えて、日本語に対応するためのjapanese.phpが必要となります。ダウンロードしたfpdf17.zipとjapanese.zipを解凍し、配下のfpdf.phpとjapanese.phpと/fontフォルダをinclude_pathで指定されたパス配下の/libsフォルダに配置してください。fontフォルダには、フォントメトリクス設定ファイルと呼ばれる、個別のフォント情報を管理するためのスクリプトが含まれています。
FPDFの基本
リスト29-1は、FPDFを使ってシンプルなPDF文書(図29-1)を作成する例です。
<?php
require_once 'libs/japanese.php';
// 文字列をSJISに変換するsjis関数
function sjis($str) {
return mb_convert_encoding($str, 'SJIS', 'auto');
}
// 1A4サイズのPDF文書を準備
$pdf = new PDF_Japanese('P', 'mm', 'A4');
$pdf->AddSJISFont();
// 2ページ、フォント、描画位置を設定
$pdf->addPage();
$pdf->setFont('SJIS', 'B', 16);
$pdf->setXY(100, 80);
// 3文字列を描画
$pdf->write(18, sjis('こんにちは、世界! '));
// 4ブラウザに出力
$pdf->output();
|
PDF生成の中核を担うのは、PDF_Japaneseクラスです(1)。PDF_Japaneseクラスは、FPDF標準のFPDFクラスを拡張したクラスで、日本語に対応しているという点を除いては、その機能は同等です。よって、日本語を利用しないのであればFPDFクラスを利用しても構いません。引数には、ページ方向(P:Portlait、L:Landscape)、利用する単位(pt、mm、cm、in)、ページサイズ(A3、A4、A5、Letterなど)の順で指定します。また、日本語対応する際には、addSJISFontメソッドでSJIS(Shift-JIS)を明示的に有効化してください。
続いて、2でページ、フォント、表示位置を設定します。具体的な引数の意味は、表29-1も参照してください。以上で、コンテンツを出力する準備ができましたので、writeメソッドで文字列を出力します(3)。引数には、行間、文字列の順で指定します。FPDF_JapaneseクラスはSJISにのみ対応していますので、文字列もあらかじめSJISに変換している点に注意です*1。
メソッド | 概要 |
---|---|
addPage([string ori [, mixed size]]) | 指定のページ方向/ サイズでページを追加(デフォルトはPDF_Japaneseクラスでの指定値) |
setFont(string family [, string style [, float size]]) | フォントの種類、スタイル(B:ボールド、I:斜体、U:下線)、サイズでフォントを準備 |
setXY(float x, float y) | 現在位置(x, y)を指定 |
- *1 SJISへの変換には、ショートカットとしてsjis関数を用意しておきます。何度も呼び出す際に、いちいちmb_convert_encoding関数を記述するのは面倒だからです。
最後にoutputメソッドでPDF文書をクライアントに出力します(4)。引数がない場合は、そのままブラウザインラインで出力されますが、次のようにすることで、ローカルファイルとして保存することもできます。
$pdf->output('result.pdf', 'F');
|
※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
5. 高速で軽量なフレームワークFuelPHPを使う
高度なWebアプリ開発に向いている、高速で軽量なフレームワーク「FuelPHP」の基本的な使い方を説明する。書籍転載の5本目(書籍内の番号は「96」)。
6. FuelPHPで画面を表示する/DBを利用する
FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。
8. 表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)
FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。