• 締切済み

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
  • 回答数1
  • ありがとう数2

みんなの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

文字コードはプログラムとPDFと合っていますか?

ken555555
質問者

お礼

すいませんっ。出来ましたっ! sleipnirでやってたんですが、実行してもすごい文字化けだったのですが、IEやFireFoxで実行したら成功したんですww でもう一回sleipnirでやったら出来ましたw 何故成功したのか、さっぱりわからないですけど、とりあえず出来ました。ありがとうございます。 PDFlibがバージョンアップしたことで日本語はCMAPとか言う奴を使わなくなったみたいですね。。。

関連するQ&A

  • PHPの実行の際、パスが化ける

    WindowXPでApache+PHPでサーバのテストをしています。 実行はHTMLで記述して、クイックすると ↓の文字が実行されるようにしています。 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\1-9\追加コピー\192.php 実行すると下記のエラーが出ます。 Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/test/1-9/霑ス蜉繧ウ繝斐・/172.php' (include_path='.;C:\Program Files\PHP5\pear;c:\Program Files\php5\includes') in Unknown on line 0 ---------------------------- つまり、ホルダー名:追加コピー、の部分が化けてしまいます。 これを回避する何か方法はあるのでしょうか よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのインストールができません

    PHPとApacheをインストールしてApacheは動作したのですが、PHPの動作確認でphpinfo() を行っても画面に「<?php phpinfo(); ?>」が表示されるだけでPHP情報が表示されません。 Windows7 professional PHP version:php-5.3.3-win32-vc6-x86.msi    インストール先:C:\PHP apache version:Apache 2.2.17      インストール先:C:\Program Files (x86)\Apache Software Foundation\Apache2.2 httpd.confには下記のものは追記済みです。 ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2" DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"> AddType application/x-httpd-php .php AddType application/x-httpd-php-souce .phps PHPIniDir "C:/PHP/" LoadModule php5_module "C:/PHP/php5apache2_2.dll" またphp.iniもshort_open_tag = Offになっています。 エラーログを見ましたが特にエラーは上がっていません。 いろいろなHPを見て調べたのですがわかりません。 インストールは主に下記のHPを参考にさせていただきました。 http://blog.livedoor.jp/yk_pointer/archives/65526007.html PHPについてはこれから勉強しようと思っているところですので むずかしいことはわかりませんが、何かヒントをいただければ 勉強しながら解決したいと思います すみませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • Wordpress のPHPファイルをIEで開く

    WordPress のテーマを変更したいと思い、PHPファイルをいじったのですが PHPファイルをそのままIEで開けないんですね。 ディレクトリはこんな感じなんですが、 C:\Program Files\Apache\Apache24\htdocs\wordpress\wp-content\themes http://localhost/wordpress\wp-content\themes\twentytwelve\index.php では開けませんでした。間違ってますか? It works と表示されるファイル(C:\Program Files\Apache\Apache24\htdocsにあります。)はhttp://localhost/で開けます。

    • ベストアンサー
    • PHP
  • PHPの場所について

    昨日からPHPをはじめました。 いろいろなサイトを参考に、ApacheとPHPをインストールしました。 ブラウザで、『http://localhost』と入力すると、ちゃんとApacheの画面も表示され、『C:\Program Files\Apache Group\Apache2\htdocs』内に作成・保存したテストプログラムも表示されます。 けれど、このフォルダ以外の場所では、テストプログラムは表示されません。 PHPで書かれたファイルは、『\htdocs』以外の場所では実行できないのでしょうか? 普段、別のフォルダ内にホームページ用のファイルを作っていて、そこで使用したかったのですが、そういった場合はどのようにしたら良いのでしょうか? もしかしたら、『おいおいっ!』という内容の質問なのかもしれませんが、いろいろなサイトを見てもそこのところがスッポッと抜けていて、初心者の私には分かりませんでした。 お手数ですが、教えて下さい。お願いします。

    • ベストアンサー
    • PHP
  • CGIを開けない。。。

    apacheとphpを設定して動作確認したあとに、cgiも操作したいので、Active Perlというものをインストールしてみました。 phpは、http://localhost/で「C:/Program Files/Apache Software Foundation/Apache2.2/htdocs」のフォルダーを参照できるのですが、cgiを開くときには、どこのフォルダーに格納し、URLをどうすれば宜しいのでしょうか?(因みにcgi-binとhtdocsに格納し、http://localhost/***.cgiで試したのですが駄目でした。) Active Perlインストール後に変更した場所 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AddHandler cgi-script .cgi .pl なお、perlの設定には、こちらhttp://www.jisaba.net/xp/actpeal/04.htmのサイトを参考にしました。 環境はWindowsVistaです。 どなたか宜しくお願い致します。

    • ベストアンサー
    • Perl
  • php include がどうしてもできません;;

    php include がどうしてもできません;;; php、超がつく程初心者です; Windows7、Internet explorer9、Apache2.2、PHP5.4.6、現在はlocalhost上でphp動作確認、 作業しております。 サイトのメニューをPHPで作成したいと思い色々必死に調べ、htdocsフォルダ直下同士?のphpは何とか表示させることができました。(localhostですが) しかしhtdocsより下のフォルダに入っているものですと、例え同階層でも表示がされません; ↓のような感じで完全に詰まってしまいました; htdocs/index.html に htdocs/topmenu.php を表示させる↓ htdocs/index.html内で <?php include(dirname(__FILE__).'/topmenu.php'); ?> → 成功 htdocs/naiyou/naiyou1.html に htdocs/naiyou/menu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/menu.php'); ?> → 失敗 htdocs/naiyou/naiyou1.html に htdocs/topmenu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/../topmenu.php'); ?> → やっぱり失敗 htdocsフォルダ直下のみでしかできない設定に私がしてしまっているのでしょうか。 元々直下のみしか表示できないもの…? それとももっと基本的なところでひかかっているのかな… 何かのパスが間違っているのでしょうか。 htdocsフォルダの場所とDocumentRootは共に "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" となっています; 知識不足もあり言葉が足りないこと、説明がよく分からないことも多いこともあるかと…すみません。 既出の質問等も探しているのですが同条件を中々見つけられず、もうかれこれ1ヶ月近く解決せず悩んでいます。 申し訳ありませんが、どなたかご教授ください...;

    • ベストアンサー
    • PHP
  • HTMLファイルにPHPファイルを組み込むとエラー

    HTMLファイルの拡張子をPHPへ変更し(正常に見えることを確認した)そのPHPファイルへ別に作成したPHPファイルを追加ペーストしたのですが下記のエラーが出て困っています。別に作成したPHPファイルは、単独では正常に見えるので、何故エラーが出るのかご教示をお願いします。検索すると下記のエラーと同じ内容が表示されたHPばかりでどうやって修正したら良いかわかりません。私としては、もともと作成したHTMLファイルにPHPを組み込めると時間的に楽なのですができないようなので仕方なくPHPへ変更してそれにコンテンツを追加しようとしています。PHPは、今回初めてなのでほとんど素人です。 Warning: include(magpierss-0.72/rss_fetch.inc) [function.include]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 156 Warning: include() [function.include]: Failed opening 'magpierss-0.72/rss_fetch.inc' for inclusion (include_path='.;c:/php/includes;C:/php/PEAR;c:/php/popup/includes') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 156 Fatal error: Call to undefined function fetch_rss() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 258 156行の文は include('magpierss-0.72/rss_fetch.inc'); です。 258行は function getRss($rssInfo) { $feed = fetch_rss($rssInfo['url']); ファイルが開けない?とうエラーは、単独では表示されなかった。何か使い方が悪いのかその辺も含めて教えていただけたらと思い投稿させていただきました。検索で調べましたが、同じエラー内容が表示されたHPがたくさんあり根本的な単純な間違いかもしれませんが宜しくお願いします。

    • 締切済み
    • PHP
  • apache2.2とPHP5のインストール

    こんにちは。パソコンはあまり得意ではないのですが、PHPを使わなければならない状況となり、apacheが正しく起動してくれないため困っています。 OSはvistaで、apache2.2とPHP5をインストールしました。グーグルで調べて環境設定をしたのですが、apacheを起動しても[The requested operation has failed!」と出てきてしまいます 。 <httpd.confで> LoadModule php5_module c:/php/php5apache2_2.dll Addtype application/x-httpd-php .php PHPIniDir"C:/php5" AddDefault Charset none ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2" ServerName localhost:8080 <php.iniで> doc_root = "c:/Program Files/Apache SoftwareFoundation/Apache2.2/htdocs" extension_dir = "c:\php5\ext" mbstring.internal_encoding = UTF8 mbstring.http_output = UTF8 mbstring.substitute_character = none; output_handler = mb_output_handler 以上が変更した点です。path設定もしました。なぜapacheが起動しないのかさっぱり分りません。上記で何か間違った点、足りない点などありましたらご指導お願いします!

    • ベストアンサー
    • PHP
  • CGIの実行

    CGIを実行しようとしたら、下記のようなメッセージが出てしまいました。このDirectoryではダメって事なのでしょうか。 Options ExecCGI is off in this directory: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/ruby.cgi CGIってCgi-Binの下って決まっているのでしょうか? どなたかご存知であれば教えてください。

    • 締切済み
    • CGI
  • バッチファイルの記述方法

    バッチファイルでファイルパスを ひとつにまとめて記述したいと考えてます。 そこで以下のように書いたのですが 思った動きになりません。 set DOCPATH="C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\sample\" test.bat %DOCPATH%test.csv 値をセットするときは「set ○○」で 使用するときは「%○○%」という認識でしたが どこが違うのでしょうか?

専門家に質問してみよう