PDFLib

久しぶりにPDFLibを使用
Windows Vista Business SP1(Win32)
Apache 2.0.63
PHP 4.4.8


まずここで落ちた。
PDF_begin_document($pdf, $out_dir_file, 'compatibility=1.5');

1.C:\php\extensions\libpdf_php.dllを追加した。
PDFLib-6.0.1をダウンロードしたかったが、
 PDFlib-7.0.4しかなかったので、
 PDFlib-7.0.4p6-MSWin32-php.zipをダウンロード)

2.php.iniの編集
extension=php_pdf.dllをコメント
extension=libpdf_php.dllを追加
で解決。




次に、ここで落ちた。
$opt_textblock = "fontname {HeiseiKakuGo-W5} pdiwarning true encoding UniJIS-UCS2-H textformat utf8";
$ret_block = PDF_fill_textblock($p, $page, "hyohonno", mb_convert_encoding($data['hyohonno'], "UTF-8", "SJIS-win"), $opt_textblock);

いろんな事が想像されたが、結局「UniJIS-UCS2-H」がなかっただけ。


PDFLibのサイトに

                                                                                                                                                            • -

PDFlib 7 で日本語等、CJK(日中韓)の文字列を出力する場合、
PDFlib は CMap ファイルを読み込む必要があります。
PDFlib 日本語リソースキットをダウンロードおよび展開し、
下記手順により resource/cmap/ ディレクトリ配下にあるファイルを設置してください。

Windows 環境
レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\PDFlib\PDFlib\7.0.0\SearchPath に CMap ファイルを格納したディレクトリ(例えば c:/pdflib/resource/cmap)を設定するか、あるいはプログラム中で下記のように設定します(※ PDF_set_parameter() は PDF_new() の呼び出し後に記述します)。

// PHP の場合
PDF_set_parameter($p, 'SearchPath', 'c:/pdflib/resource/cmap');


■その他の環境

CMap ファイルを任意の場所(例えば /usr/local/pdflib/resource/cmap)にコピーし、そのパスをプログラム中で以下のように設定します。

// Java など
p.set_parameter("SearchPath", "/usr/local/pdflib/resource/cmap");

// PHP など
PDF_set_parameter($p, "SearchPath", "/usr/local/pdflib/resource/cmap");

また、環境変数 PDFLIBRESOURCEFILE に、SearchPath の設定がされた UPR 設定ファイルへのパスを指定することも可能です。

                                                                                                                                                            • -

と書いてあった。。。

プログラムには既に、
PDF_set_parameter($pdf, 'SearchPath', $cmapfile);
が記述してあったので、$cmapfileで指定されていたパスのところに解凍。

これで解決!!