サンプル通り入力してもエラーになり、PDFファイルが使えません。
市販のサンプル集を用いて、PHPを独学中の者です。プログラミング言語を学ぶのは今回が初めてです。
基本構文やフォームについて等を学び、現在「PDFファイルを使用する」という章を学習中なのですが、サンプル通り入力してもエラーが表示されてしまいます。
・一つ目
<?php
$pdf=pdf_new();
$fname="/file/testdir/test.pdf";
pdf_open_file($pdf, $fname);
pdf_begin_page($pdf,595, 842);
//A4:595-842
//A5:421-595
$font = pdf_findfont($pdf, "Century", "winansi", 1);
pdf_setfont($pdf, $font, 20);
pdf_show_xy($pdf, "TEST---".date("Y/m/d H:i:s"), 0, 800);
pdf_end_page($pdf);
pdf_close($pdf);
?>
これは、
Fatal error: Uncaught exception 'PDFlibException' with message 'Function must not be called in 'object' scope' in
C:\xampp\htdocs\_test\pdf_gen.php:5 Stack trace: #0 C:\xampp\htdocs\_test\pdf_gen.php(5): pdf_begin_
page() #1 {main} thrown in C:\xampp\htdocs\_test\pdf_gen.php on line 5
というエラーが出ます。
・2つ目
<?php
$pdf = pdf_new();
pdf_open_file($pdf, "");
pdf_begin_page($pdf, 595, 842);
$font= pdf_findfont($pdf, "Times New Roman", "winansi", 1);
pdf_setfont($pdf, $font, 20);
pdf_set_text_pos ($pdf, 50, 800);
for ($i=1;$i<=5;$i++) {
pdf_continue_text($pdf,$i);
}
pdf_end_page($pdf);
$buf=pdf_get_buffer($pdf);
header("content-type: application/pdf");
header("content-length: ".strlen($buf));
echo $buf;
?>
これに対しては
Fatal error: Uncaught exception 'PDFlibException' with message 'Metrics data for font 'Century' not found' in C:\xampp
\htdocs\_test\disp_pdf.php:7 Stack trace: #0 C:\xampp\htdocs\_test\disp_pdf.php(7): pdf_findfont() #1 {main} thrown in
C:\xampp\htdocs\_test\disp_pdf.php on line 7
というエラーです。
もうひとつ別のスクリプトを記述した場合には、一つ目とほぼ同じエラーになります。
最初は、3つとも動かないということはPDFlibのインストール自体の問題かと思ったのですが、書かれた通りに設定したはずですし、何より一つ目と二つ目ではエラーの中身が異なることから、別々の問題なのだろうと考えています。
素人である私の推測に過ぎませんが、一つ目に関しては
エラー自体は5行目だが、本当は3行目、
「$fname="/file/testdir/test.pdf";」の部分が問題なのかと考えています。
テキストに突然これが出てきたからそのまま入力してみましたが、"/file/testdir/test.pdf"のファイルは事前に用意しておかなければならなかったのでしょうか?
もしそうなら、どこにどのように作れば良いのでしょうか?
テキストの「表示例」のURL欄を見る限り、C:\file\testdir・・となっているのですが、C:の下にいきなり「file」というディレクトリを作れということなのですか?
2つ目については、単に「Century」というフォントの問題なのだろうと思い、php_findfontを調べたときの使用例で使われているのことの多かった「Times New Roman」などに変更してみたのですが、同様のエラーが表示されてしまいます。
これもやはり事前に何か(Centuryというフォントに関する何か)を用意しておかなければならないのでしょうか?
以上、2点について教えてください。よろしくお願いします。
お礼
回答ありがとうございす。無事TIMES NEW ROMANが使えるようになりました。