■FPDFの概要
PHPでPDFファイルを作成できるフリーライブラリFPDFの詳細はFPDF公式HPでどうぞ。
ページ自体は英文ですが、日本語対応もされていますので、心配なく。ただ、海外向けの記事を日本語訳しただけのCNet系のウェブサイトのサンプルだとそこらへんまでは考慮されていないので、そこの英文を日本文にしても文字化けしちゃいます。
また、有志による日本語サイトも立ち上げられています。FPDF-Jでどうぞ。
ページ自体は英文ですが、日本語対応もされていますので、心配なく。ただ、海外向けの記事を日本語訳しただけのCNet系のウェブサイトのサンプルだとそこらへんまでは考慮されていないので、そこの英文を日本文にしても文字化けしちゃいます。
また、有志による日本語サイトも立ち上げられています。FPDF-Jでどうぞ。
■インストール
FPDFのインストールは簡単です。
downloadページを開き、
japanese.zipは、日本語対応パッチ。ttf2pt1は、フォント情報を取得&変換できるツールです。使い方については後述します。
そして、本体のダウンロードページから本体をダウンロードします。08年3月3日時点ではv1.53が最新版となっているので、ZIPでもTGZでもお好みのほうをダウンロードしておきます。
本体を解凍したら、自分のPHPの環境に合わせて設置するだけです。
面倒なら、/home/username/FPDF/以下に丸ごとコピーしちゃってもいいです。
インクルードパスの指定も必要ないです。
以下の説明では/home/username/FPDF/にライブラリをインストールしたものとして説明しますので、別の場所に設置した場合は読み替えてください。
次は日本語パッチを導入します。
japanese.zipを解凍すると、japanese.phpとex.phpがありますので、これらのファイルを/home/username/FPDF/にコピーします・・・といいたいところですが、そのままだとフォント変更が出来ないので、以下のような変更が必要です。
-japanese.php
フォントなんか変更しない、って方ならそのままでもいいですが、以下のように変更すると、フォント名が反映されるようになります。厳密にはフォントファミリーではなくてフォント名なので、別メソッドを作るってのもアリかもしれません。お好みでどうぞ。
-変更例
おまけですが、デフォルト引数もMSGothicにしておくと、引数省略でMSゴシックになるので、お好みのフォント名にしておくとよいでしょう。
インストールはこれで完了です。
downloadページを開き、
japanese.zipをダウンロードしておきます。
ttf2pt1.zip(option)
japanese.zipは、日本語対応パッチ。ttf2pt1は、フォント情報を取得&変換できるツールです。使い方については後述します。
そして、本体のダウンロードページから本体をダウンロードします。08年3月3日時点ではv1.53が最新版となっているので、ZIPでもTGZでもお好みのほうをダウンロードしておきます。
本体を解凍したら、自分のPHPの環境に合わせて設置するだけです。
面倒なら、/home/username/FPDF/以下に丸ごとコピーしちゃってもいいです。
インクルードパスの指定も必要ないです。
以下の説明では/home/username/FPDF/にライブラリをインストールしたものとして説明しますので、別の場所に設置した場合は読み替えてください。
次は日本語パッチを導入します。
japanese.zipを解凍すると、japanese.phpとex.phpがありますので、これらのファイルを/home/username/FPDF/にコピーします・・・といいたいところですが、そのままだとフォント変更が出来ないので、以下のような変更が必要です。
-japanese.php
function AddSJISFont($family='SJIS')
{
//Add SJIS font with proportional Latin
$name='KozMinPro-Regular-Acro';
$cw=$GLOBALS['SJIS_widths'];
$CMap='90msp-RKSJ-H';
$registry=array('ordering'=>'Japan1','supplement'=>2);
$this->AddCIDFonts($family,$name,$cw,$CMap,$registry);
}
となっているのですが、これだとnameが固定になっちゃうんで、フォント名が変わらないので困ります。フォントなんか変更しない、って方ならそのままでもいいですが、以下のように変更すると、フォント名が反映されるようになります。厳密にはフォントファミリーではなくてフォント名なので、別メソッドを作るってのもアリかもしれません。お好みでどうぞ。
-変更例
$name=$family;このように変更したファイルjapanese.phpとex.phpを/home/username/FPDF/にコピーすればOKです。
おまけですが、デフォルト引数もMSGothicにしておくと、引数省略でMSゴシックになるので、お好みのフォント名にしておくとよいでしょう。
インストールはこれで完了です。
■ドキュメント
本体のダウンロードページを見ると、ひとつ前のバージョンですが、日本語版のドキュメントがダウンロードできるようになっていますので、これをダウンロード&解凍、index.htmlを開けば日本語ドキュメントが利用できます。
■簡単なサンプル
では、実際に使ってみます。
これを適当なファイル名でサーバーに保存しておくと、PDFファイルが表示されるはずです。
一つ目のポイント:海外向けのサンプルページでは、new FPDFとなっていると思いますが、ここではnew PDF_Japaneseとして日本語を使えるようにしています。
二つ目のポイント:Writeする際、SHIFT-JISに文字コード変換しているのがポイントです。これを忘れると文字化けしちゃいますので、ご注意を。
三つ目のポイント:フォントについては後述しますが、フォントを切り替えるにはSetFontを使用しますが事前にAddSJISFontで登録しておかないといけません。フォント名についてはとりあえずそのまま流しておいてください。
define('FPDF_FONTPATH','/home/username/FPDF/font/');
require('/home/username/FPDF/japanese.php');
$pdf=new PDF_Japanese();
$pdf->Open();
$pdf->AddPage();
$pdf->AddSJISFont("MSGothic");
$str = "こんにちは、日本語で書いてみました\n2行目には、半角カナを入れてみるテスト\n3行目には、全角スペース( )と半角スペース( )を入れてみる\nenglish test\n";
$pdf->SetFont('MSGothic','',12);
$pdf->Write(8,mb_convert_encoding($str,'SHIFT-JIS','UTF-8'));
これが最小限のサンプルコードです。これを適当なファイル名でサーバーに保存しておくと、PDFファイルが表示されるはずです。
一つ目のポイント:海外向けのサンプルページでは、new FPDFとなっていると思いますが、ここではnew PDF_Japaneseとして日本語を使えるようにしています。
二つ目のポイント:Writeする際、SHIFT-JISに文字コード変換しているのがポイントです。これを忘れると文字化けしちゃいますので、ご注意を。
三つ目のポイント:フォントについては後述しますが、フォントを切り替えるにはSetFontを使用しますが事前にAddSJISFontで登録しておかないといけません。フォント名についてはとりあえずそのまま流しておいてください。
■フォント指定
フォント埋め込みが必要ないのであれば、簡単なサンプルで指定したように
AddSJISFontでフォントを登録し、SetFontで登録したフォントから指定するだけです。
問題になるのはフォント名をどう指定するの?ってことになると思いますので、これについて説明します。
あらかじめダウンロードしておいたttf2pt1.zipが必要になるので、ダウンロードしていない方はダウンロードし解凍しておきます。
Windowsのスタートメニューから「ファイル名を指定して実行」→「cmd」とすると、コマンドプロンプトを開きます。
コマンドプロンプトを開いたら、「cd 」と入力しておいてttf2pt1を解凍したフォルダをコマンドプロンプトにドラッグ&ドロップし、Enterキーを押せば簡単にディレクトリ変更が出来ます。
フォントファイルは、c:\windows\fontsに入っているので、使いたいフォントのファイル名を覚えておくか、ttf2pt1を解凍したフォルダにコピーしておいてもよいでしょう。
ここでは、c:\windows\fonts\MSUIgothic.ttfをサンプルとして説明します。
コマンドプロンプトに戻って、
しばらくすると、MSUIgothic.afmとMSUIgothic.t1aというファイルが生成されます。
テキストエディタでMSUIgothic.afmを開くと、
MSUIgothicのフォント名はMS-UIGothicということが分かります。このフォント名をAddSJISFont、SetFontで指定すれば好きなフォントが使えます。
もっとも、MSGothicやMSMinchoなどはそのまま指定しても反映されるので標準的と思われる二つのフォントを指定するだけならこの作業は必要ないですけど、どうせならいろんなフォントを使いたいですよね。
覚えて置いて損はないと思います。
AddSJISFontでフォントを登録し、SetFontで登録したフォントから指定するだけです。
問題になるのはフォント名をどう指定するの?ってことになると思いますので、これについて説明します。
あらかじめダウンロードしておいたttf2pt1.zipが必要になるので、ダウンロードしていない方はダウンロードし解凍しておきます。
Windowsのスタートメニューから「ファイル名を指定して実行」→「cmd」とすると、コマンドプロンプトを開きます。
コマンドプロンプトを開いたら、「cd 」と入力しておいてttf2pt1を解凍したフォルダをコマンドプロンプトにドラッグ&ドロップし、Enterキーを押せば簡単にディレクトリ変更が出来ます。
フォントファイルは、c:\windows\fontsに入っているので、使いたいフォントのファイル名を覚えておくか、ttf2pt1を解凍したフォルダにコピーしておいてもよいでしょう。
ここでは、c:\windows\fonts\MSUIgothic.ttfをサンプルとして説明します。
コマンドプロンプトに戻って、
ttf2pt1 -a MSUIgothic.ttf MSUIgothicと入力します。
しばらくすると、MSUIgothic.afmとMSUIgothic.t1aというファイルが生成されます。
テキストエディタでMSUIgothic.afmを開くと、
FontName MS-UIGothicという行があると思います。
MSUIgothicのフォント名はMS-UIGothicということが分かります。このフォント名をAddSJISFont、SetFontで指定すれば好きなフォントが使えます。
もっとも、MSGothicやMSMinchoなどはそのまま指定しても反映されるので標準的と思われる二つのフォントを指定するだけならこの作業は必要ないですけど、どうせならいろんなフォントを使いたいですよね。
覚えて置いて損はないと思います。
■TTC形式のフォント
フォントファイルは上で述べたような拡張子がttfのファイルのほか、拡張子がttcのTrueTypeCollection形式のフォントファイルもあります。
簡単に言うと、ttfファイルを複数収めたファイルです。
ここでは、ttc形式のファイルに含まれるフォント名の取得方法を説明します。
まず、エクセルソフトのAutoPlay Media Studio で日本語を表示するで配布されているttsdk.zipをダウンロードします。
ダウンロードしたファイルを解凍すると、BREAKTTC.EXEというファイルが含まれているので、ttf2pt1を解凍したフォルダにコピーしておきます。
コマンドプロンプトを開き、
あとは、フォント指定で説明したのと同じようにttf2pt1でフォント名を確認すればOKです。
実際にWindowsVistaで採用されたメイリオもTTCなので、これを見てみると、
簡単に言うと、ttfファイルを複数収めたファイルです。
ここでは、ttc形式のファイルに含まれるフォント名の取得方法を説明します。
まず、エクセルソフトのAutoPlay Media Studio で日本語を表示するで配布されているttsdk.zipをダウンロードします。
ダウンロードしたファイルを解凍すると、BREAKTTC.EXEというファイルが含まれているので、ttf2pt1を解凍したフォルダにコピーしておきます。
コマンドプロンプトを開き、
breakttc 拡張子がttcのファイルとすると、そのフォントに含まれる数分のttfファイルが抽出されます。
あとは、フォント指定で説明したのと同じようにttf2pt1でフォント名を確認すればOKです。
実際にWindowsVistaで採用されたメイリオもTTCなので、これを見てみると、
FontName Meiryoとなっていることが分かります。
作成日:08年03月3日



![PHP]Architect Nanobook: Beginning PDF Programming with PHP and Pdflib](http://rcm-images.amazon.com/images/P/0973589841.09.TZZZZZZZ.jpg)







