• ベストアンサー

FPDFについて

FPDF 1.53とMBFPDF 1.0bをダウンロードしてきたのですが使い方が分かりません。FPDF 1.53を解凍し、Apacheのhtdocsフォルダにコピーし、マニュアルどおりのもっとも基本的なスクリプト(1)を使っても、「ページを表示できません」か、壊れたdoc.pdfのダウンロードを促されるだけです。次にMBFPDF 1.0bをhtdocsフォルダに上書きコピーし、スクリプト(2)を使ったのですが同様でした。最初にスクリプトを動かした時に、なぜかAdobe Reader8とAdobe Reader7.0が同時にインストールされました。(なぜかAdobe Photoshop Album Mini 3.2なんていうのもインストールされています。)とりあえず英語でも良いから動くようにしたいです。(できれば日本語でも。)誰か分かる方いたらよろしくお願いします。使用したスクリプトは (1) <?php require('fpdf.php'); $pdf=new FPDF(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'Hello World!'); $pdf->Output(); ?> (2) <?php require('mbfpdf.php'); $pdf=new MBFPDF(); $pdf->AddMBFont(KOZMIN, 'sjis'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont(KOZMIN, '', 20); $pdf->Write(10,"こんにちはFPDF\n"); $pdf->Output(); ?> です。

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

  • ベストアンサー
  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.5

php.iniは当方include_dirの追加をしたくらいでした。 検索で出てきたぺージにsession.auto_startの設定でheaderが送信されて しまうとPDFが表示されないとありました。 http://fpdf.japansite.net/modules/newbb/viewtopic.php?topic_id=100&forum=4 これ以前の問題かも知れませんが、tryとcatchでくくって見るとどこでエラーか分かるかもしれません。 ブラウザの設定によるエラーかも知れませんのでブラウザに出力ではなくローカルに保存という形に変更してみました。 <?php try{ require ('japanese.php'); // 自スクリプトの文字コード define(SC_CHAR, "UTF8"); $pdf = new PDF_Japanese($orientation = 'L', $unit = 'mm', $format = 'A4'); // SJISフォント $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS', '', 14); $pdf->SetTextColor(0, 0, 0); $pdf->Cell(17, 10, sjis_conv("こんにちはFPDF"), 0, 0,C); $pdf->Output("test.pdf", false);//test.pdfで保存 echo "OK\n"; } catch (Exception $e) { $e->getMessage(); } // 文字コードSJIS変換(japanese.phpで使用出来る文字コードはSJISのみ) function sjis_conv($conv_str) { return (mb_convert_encoding($conv_str, "SJIS", SC_CHAR)); } ?>

参考URL:
http://fpdf.japansite.net/modules/newbb/viewtopic.php?topic_id=100&forum=4
takethemis
質問者

お礼

わざわざ度々ありがとうございます。php.iniを見直したところ、ご指摘の通り、session auto_start = 1を0に直し、mbstring.func_overloadを0に設定するか、コメントアウトすることによって、正常に機能することが分かりました。色々とご迷惑をおかけしました。勉強になりました。これからもよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.4

私のスクリプトで説明をしますね。Japanese.zipをダウンロード& 解凍してください。 fpdf.phpはこれから使用するjapanese.phpでインクルードして継承して 使うので インクルードするファイルはjapanese.phpですので japanese.phpをスクリプトと同じフォルダか、php.iniで 設定したインクルードパスに収めておいてください。 そして、japanese.phpでfpdf.phpを継承して使うのでfpdf.phpも japanese.phpと同じようにインクルードパスに収めるかスクリプトと同じ階層においてください。 スクリプトの方は <?php require ('japanese.php'); // 自スクリプトの文字コード(私の場合はUTF8なので) define(SC_CHAR, "UTF8"); $pdf = new PDF_Japanese($orientation = 'L', $unit = 'mm', $format = 'A4'); // SJISフォント $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS', '', 14); $pdf->SetTextColor(0, 0, 0); $pdf->Cell(17, 10, sjis_conv("こんにちはFPDF"), 0, 0,C); $pdf->Output(); //↓紹介したページのファンクションをそのまま使用します。 // 文字コードSJIS変換(japanese.phpで使用出来る文字コードはSJISのみ) function sjis_conv($conv_str) { return (mb_convert_encoding($conv_str, "SJIS", SC_CHAR)); } ?> インクルードエラーでない限り表示されると思います が・・・試してみてください。

takethemis
質問者

お礼

丁寧なお返事ありがとうございます。お返事の通りに一連の操作を行ったり、他のHPを見て、書いてある通りに操作をしたりしたのですが、結果は同じく壊れたdoc.pdfファイルが作成されるだけでした。先の質問にも書いた通り、fpdf.phpファイル自体が機能していないようなので、おそらくphp.iniファイルの設定ミスだと思います。何か情報ありませんか…。

全文を見る
すると、全ての回答が全文表示されます。
  • taaaaaaa
  • ベストアンサー率38% (31/80)
回答No.3

以前いろいろFPDFについてはいろいろ調べました。 奮闘記:その55 http://www.geocities.jp/sugachan1973/doc/funto55.html が詳しいです。奮闘の様子もうかがえますし、面白いです。 ただ帳票用に使うなら茶漬けブログさんのExcel_Reviserを使うのが便利です。 エクセルのテンプレートを使えるので便利です。 エクセルだとデータの出力位置を指定するのが簡単なのでFPDFを使うのに比べて作業量は1/5~1/10程度で出来てしまいます。おすすめです。 おまけに質問などにも丁寧に答えてくれますし。 茶漬けブログ http://chazuke.com/

参考URL:
http://chazuke.com/
全文を見る
すると、全ての回答が全文表示されます。
  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.2

当方もOSはWindowsXPです。 インストールする作業は必要がないので FPDFとJapanese.phpをインクルード出来るところに 保存してインクルードして使用するといった感じです。

takethemis
質問者

お礼

要するにインクルード・パスを通すということですか?そんな単純な問題じゃないのかな・・・?

全文を見る
すると、全ての回答が全文表示されます。
  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.1

私はこのページを参考にしてFPDIとJapanese.phpをrequireして 日本語で動作しています。 http://shikabo.ddo.jp/?cat=72 ( このページのFPDIに関する変更は必要ないかと思われます require('fpdi.php'); // 追加 class PDF_Japanese extends FPDI //書換 ) Japanese.zip入手先 http://www.fpdf.org/phorum/read.php?f=1&i=7977&t=7977 参考になれば幸いです。

参考URL:
http://shikabo.ddo.jp/?cat=72
takethemis
質問者

お礼

早速のお返事ありがとうございます。しかし、言い忘れましたが、残念なことに、OSはWindows XPを使っています。どなたかWindows XP対応の方法を知りませんか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FPDF・TCPDFでの画面端のテキスト表示の件

    PHPでPDFを作成しようと、FPDFやTCPDFを使って 作業をしている際に問題が起きたため、質問させて頂きます。 TCPDFを用いて下記のようなコードを実行したところ、 文字が画面内に収まらず、A4の2枚目の上端に テキストが表示されてしまいました。 つまり、画面からはみ出した状態になってしまった訳です。 --------------------------------------------------------------------------------- <?php require_once 'tcpdf.php'; $pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" ); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(0, 0, 0); $pdf->AddPage(); $pdf->SetFont('kozminproregular', '', 12); $pdf->Text(0, 190, "ほげほげ" ); $pdf->Output("test.pdf", "I"); ?> --------------------------------------------------------------------------------- A4(横)は、297mm×210mmですから、 文字の表示を指定した高さからは、2cmの 余裕があるかと思います。 ですので、画面内に表示してもらいたいところなのですが、 これは私のコードがおかしいからなのでしょうか? なお、同様の現象は、FPDFでも確認しております。 何かご存知の方は、ご教示いただけば幸いです。 お手数をお掛けしますが、どうぞ、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 文字化け

    下記ソースの商品の部分が 文字化けします。 何か改善策ないでしょうか? <?php require_once('mbfpdf.php'); $GLOBALS['EUC2SJIS']=true; $pdf=new MBFPDF(); $pdf->AddMBFont(PMINCHO,'SJIS'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont(PMINCHO,'',14); $pdf->Cell(30,10,"商品",1,1,'C'); $pdf->Cell(30,10,$_POST['syouhin'],1,0,'C'); $pdf->Cell(30,10,$_POST['conto'],1,0,'C'); $pdf->Cell(30,10,$_POST['thank'],1,1,'C'); $pdf->Cell(30,10,$_POST['xyz'],1,0,'C'); $pdf->Cell(30,10,$_POST['opq'],1,0,'C'); $pdf->Cell(30,10,$_POST['stu'],1,0,'C'); $pdf->Output(); ?>

    • 締切済み
    • PHP
  • FPDFでPDFファイルが表示されない

    こんにちは。 FPDF+Japanese.php+FPDIを使用して、既存のPDFファイルに 日本語を追加してブラウザ上で表示させようとしています。 コードを記述して、自分のPCのローカル上で動作確認をするとしっかり表示されました。 そして、レンタルしているサーバー上にアップして、確認をするとうまく表示されませんでした。 どこが悪いのかわからないので、とりあえず、コードをよりシンプルにして、 「既存のファイルに」というところはまずは省いて、単純にPDFファイルを作成して、 表示させようとしてみましたが、同じくうまくいきません。 その後、ネットでいろいろ検索したのですが、解決には至りません。 どなたか助けて下さい。 <ソースコード:文字コードはUTF-8です> <?php require('../php/fpdf/japanese.php'); $pdf=new PDF_Japanese(); $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS', '', 20); $txt = mb_convert_encoding("こんにちはFPDF", "SJIS", "UTF8"); $pdf->Write(10, $txt); $pdf->Output(); ?> <環境> 自宅: Windows Vista Apache 2.0 PHP Version 5.2.6 レンタルサーバー: Linux Apache PHP Version 5.2.5 <レンタルサーバー上での表示> %PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream x・R鞨2ミ35W(輦 Qミw3T02ミ30P ISp ・Z*麓 ・・└(h4ml晴tイiモYキ <やってみたこと> 的外れなことをやってるかもしれないので、恥ずかしいのですが… ・「session.auto_start = 0」「mbstring.func_overload = 0」と記述したphp.iniをサーバー上にアップしてみた。 ・ソースコードに「mb_internal_encoding('EUC-JP');」を追加して、保存時にもEUCで保存してみた。 ・FPDF.php内のOutput関数内に「Header('Pragma:');」を追加したり、「header("Cache-Control: public");」を追加してみたりした。

    • ベストアンサー
    • PHP
  • pdf表示

    textboxで入力した値を別のシートに 飛ばし、PDFで出力したいのですが? FPDFとMBFPDFをダウンロードして ページ内の文字をPDF出力することは 出来ました。 下記、ソースで何かおかしいところ ありましたらご指摘いただきたいのですが・・・? //送信側 <html> <head> <title>サンプル</title> </head> <body> <h2>商品のご選択</h2> <form action="http://localhost/YPHPSample/11/kame2.php" method="POST"> <input type="text" name="same"/> <input type="submit" value="送信"/> </form> </body> </html> //受け取り側 <html> <head> <title>サンプル</title> </head> <body> <h2>商品のご選択</h2> <?php require_once('mbfpdf.php'); $same=$_POST['same']; $GLOBAL['EUC2SJIS']=true; $pdf=new MBFPDF(); $pdf->AddMBFont(PMINCHO,'SJIS'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont(PMINCHO,'U',20); $pdf->Write(10,MSP明朝,$same ); $pdf->Output(); </body> </html>

    • 締切済み
    • PHP
  • FPDFを使ったPDF出力時の縦幅について

    業務でPHPを使用したことはありますが テンプレートを使ってPDF出力するのが 初めてで困っています。 サンプルコードを見ながら作成しているのですが、 テンプレートの属性指定で $pdf->useTemplate($tplidx); と、特に指定していないにも関わらず、 座標を与えるとY値が271を超えた場合に 改ページになってしまいます。 例) $page_1 = "ほげほげ"; $pdf->SetFont("MS-PGothic", "", 9); $pdf->SetXY(180, 280);//←ここです $pdf->Cell(10, 5, JA($page_1), $cell_border, 0, "R"); 仕様上、どうしても1枚の帳票に 決められたデータを表示しないといけないため 改ページできません。 ちなみにクラスファイルは、 FPDFとFPDI、JAPANESE.php等を使用しました。 Y値が270以下の他のデータは正しく表示されます。 これはFPDFの仕様なのでしょうか? すでに1週間ほど煮詰まっております。 ご存知の方がいらしたらご教授お願いいたします。

    • 締切済み
    • PHP
  • PHPでPDF表示した時のファイル名

    分かる方がいれば教えて下さい。 PHPでTCPDFを使用して、PDF表示を下記のように行っています。 require_once ("tcpdf/tcpdf.php"); $pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" ); $pdf->setPrintHeader(false); $pdf->setPrintFooter(true); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); $pdf->SetFont('kozgopromedium', '', 10); $pdf->AddPage(); $pdf->SetFont('kozgopromedium', '', 20); //フォントをIPA Pゴシック $pdf->SetMargins(10, 10, true); $pdf->Write(10,[PDF表示内容], "", false, 'C', true, 0, false, 0, ""); $pdf->SetFont('kozgopromedium', '', 10); $pdf->writeHTML($css . str_replace("caption","h1",$i), true, 0, true, false,'C'); $pdf->Output("test.pdf", "I"); PDFの作成(表示)は正常に出来るのですが、PDFのファイル名が指定した”test.pdf”にならずに PHPファイル名になってしまいます。 ※このソースが書かれているPHPファイル名が”CreatePdf.php”だとすると、PDFファイル名が  ”CreatePdf.pdf”になってしまいます。 いろいろと調べたのですが、原因が分からないのでご質問しました。 PHP Version:5.4.7 TCPDF Version: 5.9.205 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Xamppの中のphpでFPDFが使えるようにした

    あるPHPの参考書に『FPDFのセットアップ』という項目の中で、 「fpdfxxx.zip(xxxはバージョン番号)はFPDFの本体です。アーカイブを解凍した後、その配下に含まれるfpdf.phpとfontフォルダをinclude_pathが通ったパス(例えば「c:\php\includes」に配置してください。…‥以後省略) と記述されているのですが、私のパソコンにインストールしたxamppの中のphpファイルの中には、何処を探しても「includes」というファイルが見つかりません。  またxampp→php→pearと開いてみるとfpdfというファイルを発見したので開いてみたのですが…、私がダウンロードしようとしている、(http://www.fpdf.org/)の中のmbfpdf10b.zipのファイルとを比べると、あまりにもファイルの数やファイル名が異なりすぎるのでどうしたらよいのか迷っています。そして、このファイル(pear)が「include_pathが通ったパス」なのか?も解からない状態です。 php.iniの中の829行目あたりの条文も眺めて?はいるのですが、このinclude_path = “.;C:\xampp\php\PEAR” これが? Include_pathが通ったことなのか…?。  そもそもincludeファイルなるものはどこにあるのか?、無ければ「新規作成」で作ってみたらどうだろうか?、だとしても、それでinclude_pathが通っているのか?。 などと、いろいろ考えてはみたのですが…?、まったく解かりません!。 何方か、includeファイルをxamppの中のphpに設定する方法とxampp→php→pearの中にあるfpdfファイルはどのように扱えばよいのでしょうか?、ご教授ください、よろしくおねがいします。 追伸 私の使用しているパソコンは:東芝REGZA PC D712/T3FG OSは:Windows 7 Xamppのバージョンは; 1.8.1 以上です。

    • 締切済み
    • PHP
  • 独自のヘッダー、フッターの出力について

    MBFPDF(FPDF)クラスに独自のHeader()、Footer()を作成してPDFを出力しています。 ※独自で作成したHeader()、Footer()はMBFPDF(FPDF)クラスに継承しています。 ※MBFPDF(FPDF)クラスでは正常にPDF(Header、Footer)を出力しています。 訳あってTCPDFでPDFを出力するようにプログラムを変更していますが全然、出力されず何が原因で出力されないのかを調べていますが全然、わからず投稿しました。 ※内容は下記の感じです。 require_once('tcpdf/tcpdf.php'); class TCPDF2 extends TCPDF{   var $p_Data1 = NULL;   var $p_Data2 = NULL;   function setData1($pValue){     $this->p_Data1 = $pValue;   }   function setData2($pValue){     $this->p_Data2 = $pValue;   }   function Header(){     $this->Cell(20, 10, $this->p_Data1);   }   function Footer(){     $this->Cell(20, 10, $this->p_Data2);   } } $pdf = new TCPDF2("L", "mm", "A5", true, "UTF-8"); $pdf->SetMargins(10.0, 10.0, 10.0); $pdf->SetFont('ipagp', '', 10); $pdf->setPrintHeader(true); $pdf->setPrintFooter(true); $pdf->SetAutoPageBreak(true, 10.0); $pdf->AddPage(); $pdf->SetDisplayMode("fullpage", "continuous"); $pdf->Output(); ソースコードから抜粋していますがこんな感じで記述しています。 下記の関数で設定したりしましたが全然変わらず出力できませんでした。 $pdf->SetHeaderData(); $pdf->setHeaderFont(array('ipagp', '', 10)); $pdf->setFooterFont(array('ipagp', '', 10)); $pdf->SetHeaderMargin(10.0); $pdf->SetFooterMargin(10.0); 申し訳ありませんがアドバイス宜しくお願いします。

    • 締切済み
    • PHP
  • PHPでの確認画面について

    入力フォーム(html)に必要事項を入力し PHPでデータを受け取り、Mysqlに保存後 PDF出力しております。 DBに書きこむ前に確認画面を出したいのですが 以下のプログラム1つで行なうことは可能でしょうか? それとも、プログラムを分ける必要がありますか? フォームに入力 ↓ 確認画面 ↓ OKならDBへ出力&PDF出力。 NGなら入力フォームに戻りたいです。 PHP初心者です。 どうぞ、宜しくお願いします。 ----- <?php //#環境設定 mb_language("Japanese"); mb_internal_encoding ("utf8"); $errflg = 0; $host = 'localhost'; $user = 'xxxxxx'; $password = 'xxxxxx'; $database = 'xxxxxx'; //DBへ接続開始 $link = mysqli_connect($host, $user, $password, $database); if (!$link) { print("接続できませんでした"); exit(); } /* 文字セットを SJIS に変更します */ mysqli_set_charset($link, "SJIS"); //オートコミットOFF mysqli_autocommit($link, FALSE); //重複チェック $account = $_POST["name"]; $sql = 'select * from xxxxx where name = "'.$name.'";'; $rs = mysqli_query($link, $sql); $rows = mysqli_num_rows($rs); if($rows == 0){ } else {   echo "【".$name."】は既に登録されています。<BR>"; $errflg = 1; } // ステートメントの設定 $sql = 'INSERT INTO schoolmate (id,name) VALUES(?,?)'; $stmt = mysqli_prepare($link, $sql); mysqli_stmt_bind_param( $stmt,"ss", $id, $name ); // 入力チェック //名前(性) if($_POST['name'] == ""){ echo "【名前】が未入力です。<BR>"; $errflg = 1; } ~省略~ // 値設定 if($errflg == 0){ $id = $_POST["id"]; $name = $_POST["name"]; //SQL文を実行する mysqli_stmt_execute($stmt); //コミットする mysqli_commit($link); //ステートメントクローズ mysqli_stmt_close($stmt); //DBへの接続を切断 mysqli_close($link); require('/php/includes/fpdf/mbfpdf.php'); $pdf=new MBFPDF(); $pdf->AddMBFont(GOTHIC ,'SJIS'); $pdf->AddMBFont(PGOTHIC,'SJIS'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont(GOTHIC,'',10); $pdf->Write(8,"(xxxxx)\n"); $pdf->Cell(0,30,'平成  年  月  日',0,1,R); $pdf->SetFont(GOTHIC,'',12); $pdf->Cell(0,20,'氏 名             印',0,1,R); $pdf->SetFont(GOTHIC,'',14); $pdf->Cell(63,10,'氏名(漢字)',1); $pdf->Cell(63,10,$id,1); $pdf->Cell(63,10,$name,1,1); ~省略~ $pdf->Output(); }else{ $errflg = "1"; } ?>

    • 締切済み
    • PHP
  • PHPでPDFの自動印刷

    PHPでPDFを作成し、PDFがブラウザで表示されたら自動印刷するようにしようと思っています。 FPDFを使い、用紙サイズA4・用紙方向縦に設定したPDFを生成することができました。 さらにFPDFのphpファイルを拡張して、PDFファイルにAcrobat JavaScriptを埋め込めるようにしました。 プリンタを指定してAdobe Readerで自動印刷することができました。 後は給紙を用紙トレイにできればよいのですが、方法がわかりません。 Acrobat JavaScriptでできるのでしょうか?FPDFでできるのでしょうか? それとも給紙方法の制御は無理なのでしょうか?

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • Windows11にアップグレードしたらスキャンができなくなった場合、どのようにトラブルを解決すれば良いのでしょうか?
  • Windows11でのスキャンの問題を解決するために、お使いの環境や接続方法を確認し、関連するソフトウェアや設定をチェックしてください。
  • スキャンができなくなる問題は、Windows11のアップグレードによって発生することもあります。適切な対処方法を見つけて、スキャン機能を復旧させましょう。
回答を見る