TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

Think IT Software Developer's Think IT Find-IT 失敗しないソフト選び Find-IT TEDIA テクノロジーポータル TEDIA インストールマニアックス2008 インストールマニアックス2008

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

PHPのPDF作成ライブラリ
(2009/01/30公開)

PHPを使ってWindowsシステムでPDF文書を作

 読者がPHPプログラマーで、Windowsシステム上でPDF文書の作成をしようとしたことがあるなら、おそらく厄介な問題に直面したことがあることだろう。この記事ではそれらの問題に触れるとともに、デスクトップやブラウザで見ることのできるPDF文書の作り方をお見せし、それら問題の対策方法も扱うことにしよう。

 「PHPでPDF作成」などのキーワードでGoogle検索をかけてみると、サンプルプログラムを紹介する数多くの記事にめぐりあうことになるだろう。

 ただし、これらのサンプルプログラムをWindowsシステムの上で走らせると、多くの場合下のエラーが出る。

"PHP Fatal error: Uncaught exception 'PDFlibException' with message 'Metrics data for font 'Arial' not found'. "

 しかし、WindowsでPDF文書をPHPで作るのに必要とされる、この「Metrics data for font」とはどこで指定するものなのだろうか。

PDFライブラリの設定

 PDF文書を作る前に、PDFLibライブラリを含むphp_pdf.dllが正確に設定されていることを確認しておく必要がある。

 php_pdf.dllはPHPの公式サイトからダウンロードすることができる。

 スレッドセーフ版のPHPを利用する場合は「PECL 5.2.5 Win32 binaries」というファイルを、そうでない場合は「PECL 5.2.5 Non-thread-safe Win32 binaries」というファイルをそれぞれダウンロードする。もし、どちらのバージョン分からない場合は、一方をまず試してみて、うまく行かなければ他方を使えばよい。

 Zipファイルをフォルダに展開すると、多くのDLLがあらわれる。しかし、必要なのはただ1つphp_pdf.dllだけだ。このファイルのみをPHPをインストールした場所の「ext」というフォルダにコピーする。

 次に、普段使うエディターでphp.iniを開き、下記の行を追加する。

extension=php_pdf.dll

 これで、Windows上でPHPを使ってPDF文書を作成する準備が整った。

php_pdf.dllのそれぞれのバージョンについて

 多くの人が直面する重大な問題の1つとして、ネット上には余りにも多くの異なったバージョンのphp_pdf.dllが存在しているということが挙げられる。しかも、さまざまなバージョンのPHPがサーバー上で稼働している。さらに、PHPにはスレッドセーフ版とそうでないものがあり、それぞれに別個のDLLが存在していて、そのうちの適合するものを使わなくてはならない。

 また、PDFLibが現在PDFlib社によって維持されているということも、ことをさらに複雑にしてくれる。このライブラリはテストや開発用途には無料で使うことができるが、商業利用にはライセンスを購入する必要があるのだ。PDFlib社のサイトでは、PDFlibの最新バージョンは7となっているが、PHPの公式サイトから手に入るphp_pdf.dllのバージョンはいまだに5のままだ。

 これらの要因が、ネット上やPHPの公式サイトで見つかるサンプルプログラムがきちんと動作しない理由の一部となっている。それらのサンプルはLinux上では問題なく動くかもしれない。Linuxのユーザーなら、最新のPDFライブラリと共にPHPをコンパイルするのが容易だからだ。しかし、Windowsの場合は入手できるphp_pdf.dllが比較的古いバージョンなので動かない可能性が高いのだ。


1    2    3    4    5    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.