Thomas MerzによるPDFライブラリをインストールしている場合、 PHP で PDF ファイルを作成するために PDF 関数を使用することができます。 (http://www.pdflib.com/pdflib/index.html で取得可能です。コンパ イルにはthe JPEG libraryおよび the TIFF libraryが必要です。 これら2つのライブラリは、PHP の configure を実行する際にもしばしば 問題を発生します。問題を修正するには、configureのメッセージに従っ て下さい。pdflib 2.01を使用している場合、どのようにライブラリがイ ンストールされているかを確認して下さい。pdflib.soとリンクする必要 がありますが、バージョン 2.01 では libpdf2.01.so という名前でだけ ライブラリを作成するため、configureでテストプログラムをリンクする 際にこれを見つけることができません。libpdf.soからlibpdf2.01.soにシ ンボリックリンクを作成しておく必要があります。) pdflibのバージョン2.2では、APIが更に変更され、中国語及び日本語のフォ ントがサポートされました。残念なことにこれにより(php3ではなく)php4 のpdfモジュールにいくつかの変更が生じています。pdflib 2.20を使用し て、メモリ内でPDFドキュメントを生成している場合には注意して下さい。 pdflib 3.0がリリースされるまでは、動作が不安定になる可能性がありま す。pdf_set_font()のパラメータencodingは、文字 列に変更されました。これにより例えば4の代わりに'winansi'を使用する ことが必要となります。
pdflib 2.30を使用している場合、pdf_set_text_matrix() はなくなり、もうサポートされなくなっています。一般に変更点を知るには 使用しているバージョンのpdflibのリリースノートを見てみるのが良いでしょう。
pdflibのソース配布ファイルと共に配布されているpdflibに関する素晴ら しいドキュメントを参照して下さい。この文書は、pdflib の機能に関す る概要を良くまとめています。pdflibのほとんどの関数とPHPモジュール 内の関数の名前は共通になっています。パラメータも同じです。 このモジュールを効率的に使用するには、PDFまたはPostscriptの おおよその考え方も理解しておく必要があります。全ての長さと座標は Postscriptのポイント数で計られます。通常、1インチ当たり 72Postscriptポインタですが、これは、出力解像度に依存します。
FastIOが作成した ClibPDFを使用したpdfドキュメント作成用の別のPHPモジュールがあります。 このライブラリのAPIは、やや異なっています。詳細は、 ClibPDF 関数の節をご覧下さい。
現在、全てのバージョンのpdflibがサポートされています。 機能がより豊富で、古い版でパッチが必要だったいくつかの問題が修正 されているため、最新版を使用することを推奨します。 残念なことに、2.x版の0.6版に対するpdflib APIの変更点は重要なものであり、 いくつかのPHP関数を変更する必要さえありました。 変更点の一覧を以下に示します。
Info構造体はもうありません。このため、関数 pdf_get_info()は用済みであり、 関数pdf_set_info_creator(), pdf_set_info_title(), pdf_set_info_author(), pdf_set_info_subject() , pdf_set_info_keywords() は、 info 構造体を最初の引数とせず、pdf ドキュメントとするようになります。 このことは、これらの関数をコールする前に、pdf ドキュメントを オープンする必要があることも意味します。上記の関数は、 pdf_set_info()で置換することが可能で、また、 そうするべきです。
新規ドキュメントをオープンする手法が、変更されました。この関数は、 引数パラメータとして fopen() でオープンされたファイルのファイルハンドル のみをとります。
pdflib の 2.01 版で更にいくつかの変更が行われており、これらは、PHP にも 影響するものです。(pdf_put_image()のような)いくつかの 関数は、もはや必要ありません。警告が発生しますが、驚かないで下さい。
pdf モジュールは、2種類の変数型を導入します(pdflib 2.x の場合は 新しい方を1つだけ使用します)。 これらは、 pdfdoc および pdfinfo です。(pdflib 2.x を使用した場合、pdfinfo は 存在しません) pdfdoc は、pdf ドキュメントへのポインタ であり、最初のパラメータとしてほぼ全ての関数に必要です。 pdfinfo は、PDF ドキュメントに関する メタデータを有しています。 pdf_open() をコールする前に設定する 必要があります。
注意: 以下は、pdflib 0.6 に関してのみ有効です。 より新しいバージョン用の pdflib のマニュアル参照下さい。
テキストをPDFドキュメントに出力するには、各フォント毎のafmファイル を用意する必要があります。 afm ファイルは、Postscript フォントのフォントメトリックスを含んでいます。 デフォルトでは、afm ファイルは PHP スクリプトがある場所の 'fonts' という 名前のディレクトリから検索されます。 (このとは、pdflib 0.6 に関しては正しいですが、 より新しい版では afm ファイルを必要としません。)
ほとんどの関数は、かなり容易に使用することができます。 最も困難なのは完全に新規に pdf ドキュメントを作成する ところでしょう。次の例は、導入の手助けとなるはずです。 この例では、pdflib 0.6 用の PHP 関数を使用し、 ページを1つ有するファイル test.pdf を作成します。 このページは、30pt のアウトラインフォントでテキスト "Times-Roman" により書かれます。テキストは、下線も引かれます。
例 1. PDF ドキュメントを pdflib 0.6 により作成する
|
PHP スクリプト getpdf.php3 は、pdf ドキュメントを出力します。
<?php
$fp = fopen("test.pdf", "r");
header("Content-type: application/pdf");
fpassthru($fp);
fclose($fp);
?>
|
例 2. PDF ドキュメントを pdflib 2.x で作成する
PHP スクリプト getpdf.php3 は、上の例と同じです。 |
例 3. pdflib 2.x 配布ファイルによる pdfclock の例
PHP スクリプト getpdf.php3 は、pdf ドキュメントを出力します。
|