PHP で PDF ファイルを作成しよう

Topics
説明と注意事項

PHP には PDF ライブラリと組み合わせて動的に PDF ファイルを作成する 機能をもっています。今回はこの環境を整えてみようと思います。 PHP では、 PDFのライブラリで ClibPDF (注:フリーソフトウェアではありません) と PDFlib の2つを サポートしています。今回は PDFlib のみの説明となります。

PostgreSQL7.0.2 + Apache_1.3.12(DSO) + PHP-3.0.16 + PDFlib3.02 の組合せで PDF を作成する手順を説明します。稼働確認をしたプラットフォームは FreeBSD4.0(Release),VineLinux2.0 です。

まず注意事項ですが、PHP と pdflib のバージョンが異なるとたいていう まくインストールできません。(一見インストールできているようにみえても、 正常に PDFファイルの生成ができなかったりします。)これは、pdf3.0 → pdf3.01 へアップグレードした際にいくつかの関数が使用できなくなっており、 PHPのほうの pdf 関数部分がこれに未対応のためのようです。。これに関して、 広川さんがいくつかの組合せでパッチを作成されています。今回も PHP-3.0.16 + pdflib3.01 用のパッチを利用させていただきました。 ですので、コンマいくつの単位もこれと同じものにしないとうまくインストール できないと思いますので注意してください。

ソースコードを入手しよう

今回必要なファイルは以下の通りで、予め /tmp 以下においておくものと します。(リンクをクリックするとソースコードをダウンロードすることがで きます。)

postgresql-7.0.2.tar.gz
apache_1.3.12.tar.gz
php-3.0.16.tar.gz
pdflib-3.02.tar.gz
pdf-3.0.16.patch

PostgreSQL7.0.2 + Apache1.3.12 + pdflib3.0.2 + PHP3.0.16 のインストール手順
PostgreSQL7.0.2のインストール
省略します(/usr/local/pgsql にインストールするものとします。)

Apache_1.3.12のインストール

省略します(/usr/local/apache にインストールするものとします。)

pdflib-3.02 のインストール

$ cd /usr/local/src
$ tar xfz /tmp/pdflib-3.02.tar.gz
$ cd pdflib-3.01

インストールドキュメントは doc/readme_*.txt にあります。 UNIX,Mac,Windows向けのドキュメントが用意されています。 ここでは zlib,pnglib,tifflib と組み合わせています。 必要に応じて、ライブラリのあるディレクトリ等を確認してください。

./configure --with-zlib=/usr/local \
      --with-pnglib=/usr/local \
      --with-tifflib=/usr/local \
      --enable-shared-pdflib
$ make
$ make test
# make install

通常 /usr/local 以下にインストールされます。 /usr/local/lib/libpdf.so などがあればOKです。

php-3.0.16のインストール

$ cd /usr/local/src
$ tar xfz /tmp/php-3.0.16.tar.gz
$ cd php-3.0.16
$ patch -p1 < /tmp/pdf-3.0.16.patch
$ ./configure --with-pgsql \
     --enable-track-vars \
     --with-apxs=/usr/local/apache/bin/apxs \
     --with-pdflib=/usr/local \
     --with-jpeg-dir=/usr/local \
     --with-zlib-dir=/usr \
     --with-tiff-dir=/usr/local \
     --with-png-dir=/usr/local
     --with-zlib=/usr
$ make
# make install
# cp php3.ini-dist /usr/local/lib/php3.ini

httpd.conf の設定

#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
           ↓
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps

LoadModule php3_module libexec/libphp3.so の行の前に

LoadFile /usr/local/pgsql/lib/libpq.so
LoadFile /usr/local/lib/libpdf.so

の2行を追加。

Apache の起動

# /usr/local/apache/bin/apachectl start
として起動します。

サンプル等

pdf関数を使用したサンプルです。 この phpスクリプトにアクセスすると、 動的に このようなPDFファイルを作成します。 PDFファイルを見るのには Acrobat Reader が必要です。

サンプルで使用している pdf* 関数は詳しくは PDF関数マニュアル(日本語版)をごらんください。


i-kaori@sra.co.jp
Last modified: Thu Oct 12 15:47:42 2000