PDFLib/PDIライブラリを使用したPDF作成でエラーが発生

このQ&Aのポイント
  • PDFLib/PDIライブラリを使用してPDFを作成しようとしていますが、エラーが発生しました。
  • エラーメッセージは「Call to undefined function pdf_new()」で、pdf_new()関数が定義されていないという内容です。
  • php_iniファイルとlibpdf_php.dllファイルの設定は正しく行っていますが、エラーが解消されません。
回答を見る
  • ベストアンサー

pdflib /pdi の拡張関数が有効に出来ない

現在PHPを学習しておりますが、 以下で躓いております・・・ご教示ください。 PDFLib/PDIライブラリを使用して、PDFを作成を試みたのですが、 <?php $objPdf=pdf_new(); pdf_begin_document($objPdf,"","");  ・  ・  ・ なんですが、 Fatal error: Call to undefined function pdf_new() in"C//・・・・・・"on line 2 というエラーが表示されてしまいます。 c:/php/extにサンプルでついていたlibpdf_php.dllファイルを入れ、 Windowsフォルダのphp.iniファイルには extension_dir = "c:/php/ext" extension=libpdf_php.dll という記述はしました。 ちなみに extension=php_mbstring.dll は問題なく動作しているようです。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PHPの場合は $objPdf->begin_document("", ""); の方ですね。 同梱されている hello.php なども参考にするといいと思います。

参考URL:
http://www.infotek.co.jp/pdflib/pdflib/pdflib_nyumon.html
scanfprintf
質問者

お礼

参考URL大変役に立ちました。 ありがとうございました。

その他の回答 (2)

  • NARH
  • ベストアンサー率82% (88/107)
回答No.3

http://jp2.php.net/manual/ja/intro.pdf.php を読むと、 $objPdf=pdf_new(); の書き方は PHP4 の書き方みたいですね。 extension が正しく認識してるかを確認するのなら <?php phpinfo(); とかを表示してみてはどうでしょうか? ローカル環境などでWindowsでPHPのextenionを用意するときは、いつも大変だなぁ。面倒だなぁと思うのですが、PHP本体のコンパイル環境(VC6とかVC9とか,thread-safeとか Non-thread-safe とか)を意識して準備しなければならない事もあって、最初から用意されたもの(PHPのバイナリにバンドルされた物)以外を使おうとするとハマることがあります。 #本番環境や試験環境はLinuxだからいいやと、諦めたこともあります。 #僕は最近Macになったので、その辺は気にしなくなりました。 いずれにしても、dll のロードに失敗した場合は phpinfo(); に出てこないはずなので確認してみることをオススメします。

scanfprintf
質問者

お礼

ご回答ありがとうございました。 真っ先にphpinfoは確認したのですが、extensionが有効になっているかの 確認方法が分からず・・・・初心者で申し訳ございません。 PHPextensionを確認すればいいのでしょうか? そこには、20060613と日付のようなものが記載されていました。 他にextensionという記載があるのは、 Zend Extension、extension_dirと 「mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.」の計4つだけでした。 やはり有効になってextension=libpdf_php.dllが有効になっていないのでしょうか?

scanfprintf
質問者

補足

PHPがVer5.2だったのでVer5.3にして、 そして設定ファイルを最初から設定し直し、 libpdf_php.dllもバージョンが古かったので8にしました。 勘違いしており、phpinfoでextensionという文字列を探していましたが、 PDFで探すと下記になっていましたので、有効になっているようです。 PHPのバージョンが関係しているのかは、今となっては不明ですが・・・・ PDF Support             enabled PDFlib GmbH Binary-Version   8.0.1p8 PECL Version 2.2.0 Revision $Revision: 1.20.2.2 $

回答No.2

ANo.1 です。 すみません。エラーは2行目ですね。 PHP の場合は通常クラスを使う場合と同様に、 $objPdf = new PDFlib(); とするようです。 また3行目については、ANo.1 の通りです。

scanfprintf
質問者

お礼

ご回答ありがとうございました。 PHP5 だと $objPdf = new PDFlib();と書くのですね。・・・ それでもやはり Fatal error: Class 'PDFlib' not found in”C://・・・・” というエラーです。 libpdf.dllのバージョンとPHPのバージョンの問題でしょうか。 もしくはiniファイルが根本的に間違っているか・・・分からない もう少し調べて見ます。 ちなみに教材にしているのは、「10日で覚えるphp5入門教室」 という2005-2007年に出版されていたものです。 会社の後輩から譲り受けました。

関連するQ&A

  • マルチバイト関数

    今ちょうどマルチバイト関数について勉強(独学)してるところなのですが マルチバイト関数をプログラム中で使えません。 私のプログラムが間違ってるのかと思い、サンプルをそのままコピーしたもの。 それを実行してみたのですが結果は同じでした。 Fatal error: Call to undefined function mb_substr() in C:\...\4-1.php on line 3 といったようなエラーです。 上手く設定がいってないのかなとphp.iniを見直すことにしました。 今phpのモジュールはC:\phpに解凍した中のextに入ってます。 ですから extension_dir = "C:\php\ext" といった風に設定しました。そして extension=php_mbstring.dll のように書きました。 C:\php\ext以下にこのphp_mbstring.dllが存在することは確認済みです。 テキストではこれで上手くいっているのでApacheを再起動して実行してみましたが どうしても先ほどのエラーが出て先に進みません。 いったいどうすれば使えるようになるのか教えていただけませんか?

    • ベストアンサー
    • PHP
  • PHP5.3.0のSQlite関数に必要なDLL

    以前PHP5.0.4で動作していたSQLiteを利用したプログラムが Apacheでエラーが返ってきます。 現在の環境:PHP5.3.0 Apache2.2 php.iniに以下のようにつけくわえてもだめでした。 extension=php_pdo.dll extension=php_sqlite.dll 両方、5.3.0のextディレクトリにはなかったので、どっかから ダウンしましたが、このdllがいけないのか、php.iniの extensionが間違っているのかわからないという状態です。 ちなみにphp_pdo_sqlite.dllというファイルは、5.3.0のextフォルダに 最初からあったみたいなので、 extension=php_pdo.dll extension=php_pdo_sqlite.dll にしてみたのですが、これでもsqlite_open()関数をコールするところで、undefined function call というエラーがApacheから返ってきます。 いったいどうすればいいのでしょうか。

  • マルチバイト関数の呼び出し方

    PHP初心者です。 xamppをインストールし、mb_convert_kana()を使うと、 Call to undefined function: mb_convert_kana() in というエラーがでました。 php.ini上の extension=php_mbstring.dllのコメントははずしてあります。 Configuration File (php.ini) PathはC:\XAMPP\apache\bin\php.ini にあります。 phpinfoを確認してもmbstringやConfiguなどの単語がみあたらず どう設定していいのかわかりません。 同じような質問をみて修正しましたが、いまだ関数を使えずにいます。 試したことは、 Configuration File (php.ini) PathをC:\WINDOWS\php.ini に置いたことです。 windowsXP PHP Version 4.4.7 宜しくお願いします。

    • ベストアンサー
    • PHP
  • convert関数が呼び出せない

    お世話になります。 PHP 5.2.13 MySql 5.5 $date = convert('20111001', DATE);  …(1) を実行すると下記のエラーが出ます。 Fatal error: Call to undefined function convert() MySQL Command Line Clientで select convert('20111001', DATE) は問題なく出来るでの、PHPがこの関数を認識していないのかと思いphpinfo()の後に(1)のコードを加えてみた所同じエラーが出ました。 php.iniファイルの設定は extension_dir = "c:\php\ext" extension=php_mysql.dll (セミコロン削除済み) c:\php\ext\php_mysql.dll も存在します。 Windowsの環境変数には C:\PHP が設定済みです。 問題点・解決法をご存知の方がいらっしゃいましたら、どうかご教授の程よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • PHPでPDFを構成するサンプルが実行できない

    PHP初心者です。入門書を見て、PDFを構成するというサンプルを打ってたのですが、エラーが出ます。 PDFlibをダウンロードして(本が古かった為そのページが存在せず、自分でPDFlibのサイトを探してPDFlib / PDFlib+PDI / PPS アーカイブファイルのPHPという奴を入れました。)、c:/php/extに入れ、 php.iniでextension=libpdf_php.dllと書き加えました。 プログラムは以下の通りです。 <?php $objPdf=pdf_new(); pdf_begin_document($objPdf,"",""); pdf_set_info($objPdf,"Author","Yoshihiro Yamada"); $objTmp=pdf_open_pdi($objPdf,dirname(__FILE__)."/template.pdf","",0); $objPag=pdf_open_pdi_page($objPdf,$objTmp,1,""); pdf_begin_page_ext($objPdf,10,10,''); pdf_fit_pdi_page($objPdf,$objPag,0,0,"adjustpage"); $objFnt=pdf_load_font($objPdf,"HeiseiMin-W3","EUC-H",""); pdf_setfont($objPdf,$objFnt,14); pdf_set_value($objPdf,"leading",20); pdf_set_text_pos($objPdf,100,600); pdf_show($objPdf,"サーバサイド技術の学び舎 - WINGS"); pdf_continue_text($objPdf,"http://www.wings.msn.to/"); pdf_end_page($objPdf); pdf_close($objPdf); pdf_close_pdi($objPdf,$objTmp); header("Content-type: application/pdf"); header("Content-disposition: attachment; filename=result.pdf"); print(pdf_get_buffer($objPdf)); pdf_delete($objPdf); ?> エラーはこんな感じです。 Fatal error: Uncaught exception 'PDFlibException' with message 'Font 'HeiseiMin-W3' with encoding 'EUC-H': Couldn't open CMap file 'EUC-H' for reading (file not found)' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\day07\pdf_create.php:10 Stack trace: #0 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\day07\pdf_create.php(10): pdf_load_font(Resource id #2, 'HeiseiMin-W3', 'EUC-H', '') #1 {main} thrown in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\day07\pdf_create.php on line 10 多分エラー内容からcmap?という奴がいるみたいでサイトで調べてやってみたのですが、初心者にはちょっと難しくて・・・多分こうだと思って、PDFlibのサイトからcmapをダウンロードして適当なフォルダに入れて、上の構文の「$objPdf=pdf_new();」の下に「PDF_set_parameter($objPdf, 'SearchPath', 'C:/php/pdflib/resource/cmap'); 」としました。 すると、プログラムは実行出来たのですが、すごい文字化けで何もわかりません。。。 すいません。わかる方お願い致します。

    • 締切済み
    • PHP
  • PHP5の拡張モジュールの関数を有効化するとエラーがでます。

    こんにちは。 いつもお世話になっております・・・。 PHP5+Apach2+MySQL4.0 Win環境で、インストールをしていたのですが・・。 <?php phpinfo(); ?>を、Apacheのドキュメントフォルダに 入れた所、ちゃんと表示されたので、インストール 自体は行えているのかな、と思うのです。 が、C:\Windows\php.ini の中に extension = php_mysqli.dll を足して Apacheを再起動させると Warning: PHP Start up:Unable to load dynamic library. c:/php/ext\php-mysqli.dll というエラーが2回繰り返し表示されてしまうのです。 php_mysqli.dllファイルは、c:/php/extフォルダに あったのを、システムフォルダ(C:\windows\system32)にもコピーしてあります。 なぜこのようなエラーが出てしまうのでしょうか・・・。 どうかご指導よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Fatal error: マルチバイト文字列関数

    Fatal error: Call to undefined function mb_convert_encoding() 上記のようなエラーが出てしまい、困っています。 現状、phpinfo()で調べてみると 出現するはずのmbstringという項目がありません。 php.iniの状態が悪いのかと調べてみると extension=php_mbstring.dll の前には、;が無い状態です。 他の設定はこのようになっています。 mbstring.language = Japanese; mbstring.internal_encoding = UTF-8 ; mbstring.encoding_translation = On mbstring.http_input = auto ; mbstring.http_output = UTF-8 ; mbstring.detect_order = auto ; mbstring.substitute_character = none ; php.iniというファイル自体が2つあるとこのようなエラーがでるという 事例もあったので、検索をかけてみましたが php.iniというファイルは一つしか見つかりませんでした。 また、PHP自体、mb_の付く関数をはずすと、文字化けはしますが きちんと動いてくれました。 動作環境は win PHP5 Apache です。 どこを改善すれば、直ってくれるでしょうか? 教えて頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP拡張モジュールが読み込めない?

    環境 OS:windowsXP Apache ver 2.2 PHP ver 5.1.4 問題の発端はphpからMySQLを呼び出す時に下記のエラーが出た事に始まりました。 Call to undefined function mysql_connect() 恐らくextensionファイルがうまく読み込めてないものと思われるのですが、php.iniの設定でしょうか? extension関連の設定は以下になっています。 extension_dir = "C:\php\ext" extension=php_mysql.dllのコメントアウトをはずす。 phpinfo()で確認してみましたが、表示されるのはConfiguration PHP Core まででその他の設定は表示されません。 extension_dirの項目は変更すると反映されるみたいですので、php.iniは読み込めていると思うのですが…。 GD2モジュールのサンプルも動かしてみましたが、やはり駄目でした。 ApacheのhttpdconfでPHPIniDirを設定しても結果は同じでした。 どなたか、原因の解る方いらっしゃいますでしょうか?

    • ベストアンサー
    • PHP
  • 泣きそうです>< PHPでSQLite3が使えない

    こんばんは 何をどうやっても進まないのでここで質問させてください。 Windows 8にwamp (Apache 2.2.22, PHP 5.4.3) を入れています。 SQLite3を使いたいのですが、sqlite_open 関数に対して「undefined function」というエラーが出てしまいます。 php.ini の内容は次のようになっています。 ;ここから extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" (中略) extension=php_pdo_sqlite.dll ;extension=php_sqlite.dll extension=php_sqlite3.dll (中略) [sqlite] ; http://php.net/sqlite.assoc-case ;sqlite.assoc_case = 0 [sqlite3] sqlite3.extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" ;ここまで 実際、エクステンションディレクトリには php_pdo_sqlite.dll php_sqlite.dll php_sqlite3.dll があります。 phpinfo(); では PDO drivers:mysql, sqlite SQLite Library:3.7.7.1 [sqlite3] SQLite3 support:enabled SQLite3 module version:0.7 SQLite Library:3.7.7.1 sqlite3.extension_dir:c:/wamp/bin/php/php5.4.3/ext/ いったい何が行けないのでしょうか、iniの値を変えるとphpinfo()も変わるので誤った設定ファイルをいじっているのではないと思います。 バージョンなどは冒頭に記載しています。 よろしくお願いします。

  • apache2.2 php5 インストール

    VISTAへapache2.2とphp5をインストールしたのですがうまくいかないので質問させていただきます。ユーザーアカウント制御を無効化にしてapacheは無事インストールできました。 その後httpd.confに[LoadModulephp5_module "c:/php/php5apache2_2.dll"] [AddType application/x-httpd-php .php] [AddType application/x-httpd-php-source .phps]を追記。 php5ts.dllとlibmysql.dllをsystem32へ。 php.iniをwindouwsへ移動し default_charset="Shift_JIS" extension_dir = "C:/php/ext" extension=php_mbstring.dll extension=php_mysql.dll mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none と変更したのですが、phpファイルにアクセスすると ファイルダウンロードになってしまします。 どこか設定がおかしかったり、足りない部分があるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう