noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

php fpdfを使ってみる

phpでpdfを作成出力する場合、fpdfが便利です。 FPDFの公式サイト 公式サイトで、fpdfのjapanese版と日本語パッチのjapanese.zipをダウンロードしておきます。 fpdfのフォルダごと、任意のディレクトリにアップロード。 japanese.zip内にあるjapanese.phpとex.phpのふたつのファイルをfpdfディレクトリ内に格納。 テストとして、以下のスクリプトをサーバーにアップロードしてみると、 <?php require('fpdf/japanese.php'); $pdf=new PDF_Japanese(); $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS','',18); $pdf->Write(8,'FPDFの日本語対応サンプルです'); $pdf->Output(); ?> FPDF縺ョ譌・譛ャ隱槫ッセ蠢懊し繝ウ繝励Ν縺ァ縺 やっぱり文字化けがort 日本語対応のパッチのjapanese.phpは、文字コードsjisphp.iniの文字コードsjisなら、問題なく表示されるだろうが、自サーバー(Linux)はUTF8を採用しているし、php.iniでの文字コードは未設定。文字関連は、すべてphpファイルで文字コードをUTF8に統一して出力するようにしている。 はてどうしたものかと調べてみると、意外な方法?ていうか、こんな方法が紹介されていた。 <?php require('fpdf/japanese.php'); $pdf=new PDF_Japanese(); $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS','',18); $pdf->Write(8,mb_convert_encoding("こんにちわ。今晩は。お昼ですよ。","SJIS","UTF-8")); $pdf->Output(); ?> 今度は、文字化けせずに‘こんにちわ。今晩は。お昼ですよ。’と出ました。 ついでに、別のディレクトリにpdfを生成するときはパーミッション設定で書き込み可にしておかないとエラーが出てしまいます。任意のディレクトリに生成した後は、htmlからダウンロードさせるような形も実現できます。 <?php require('fpdf/japanese.php'); $pdf=new PDF_Japanese(); $pdf->AddSJISFont(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('SJIS','',18); $pdf->Write(8,mb_convert_encoding("こんにちわ。今晩は。お昼ですよ。","SJIS","UTF-8")); $pdf->Output('アップロード先のディレクトリ/sample3-1.pdf', 'F'); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="アップロード先のディレクトリ/sample3-1.pdf">PDFファイル</a></p>'); print('</body></html>'); ?>