• ベストアンサー

コピーライトを出力する事はできますでしょうか。

PHPでFPDFを使用してPDFを出力するページを作成しています。 一応、ブラウザに表示した内容をPDFで出力する事はできたのですが・・・ コピーライト(©)が?で文字化けしています。 FPDFで正常にコピーライトを出力する事はできますでしょうか。 ※PHP内でmb_convert_encoding関数をとおして出力しています。 できる、できないでも、些細な事でも何でも構いませんので宜しくお願いします。

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

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

もうひとつ。 $pdf->Output(); の前に $g = mb_convert_encoding($d, 'unicode', 'utf-8'); $pdf->Write(8,$g); $pdf->Ln(); と、これも OK だったので、replace するだけで良いようです。 replace する場合は html_entity_decode は不要でした。 試しているファイルのエンコーディングは UTF-8 なので、 $a も UTF-8 です。

T-k_jp
質問者

お礼

返答が遅くなってすみません。 お陰さまでコピーライト(丸C)を出力する事ができました。本当にありがとうございました。 では、失礼します。

その他の回答 (2)

回答No.2

http://blog.goo.ne.jp/xmldtp/e/c9171ae62feb248d1bacca56daa541a4 の方が書かれているように FPDF は公式サイトに日本語対応のものが あります。 http://www.fpdf.org/download/japanese.zip で、ブログの方が書かれているように japanese.php の最後の方に UTF-8 の定義をするのがひとつの方法です。 あと、stackoverflow に似たような質問があって、 http://stackoverflow.com/questions/10516960/html-entity-decode-in-fpdfusing-tfpdf-extention の方法も使ってみます。 この方法で、 <?php // http://blog.goo.ne.jp/xmldtp/e/c9171ae62feb248d1bacca56daa541a4 require_once('php/japanese.php'); $pdf=new PDF_Japanese(); //print_r($pdf); $pdf->AddUniJISFont('mono'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('UniJIS','',18); $a = 'あ===&copy;==='; $b = mb_convert_encoding(html_entity_decode($a), 'unicode', 'utf-8'); $c = html_entity_decode(mb_convert_encoding($a, 'unicode', 'utf-8')); // http://stackoverflow.com/questions/10516960/html-entity-decode-in-fpdfusing-tfpdf-extention $d = str_replace('&copy;', "\xc2\xa9", $a); $e = mb_convert_encoding(html_entity_decode($d), 'unicode', 'utf-8'); $f = html_entity_decode(mb_convert_encoding($d, 'unicode', 'utf-8')); $pdf->Write(8,$a); $pdf->Ln(); $pdf->Write(8,$b); $pdf->Ln(); $pdf->Write(8,$c); $pdf->Ln(); $pdf->Write(8,$d); $pdf->Ln(); $pdf->Write(8,$e); $pdf->Ln(); $pdf->Write(8,$f); $pdf->Output(); ?> というページを作成すると、私の環境では x $a o $b x $c x $d o $e o $f となりました。 文字列を html_entity_decode してから、mb_convert に通すか、 コードポイント c2a9 に replace してから処理すれば、良さそうに見えます。 FPDF のサイトには UTF-8 にも対応した、あるので、文書を UTF-8 で作っておけば、 それが使えるかも知れません。私は試していません。 他に TCPDF も UTF-8 出力ができるので、こちらのほうが簡単かも知れないと思います。

回答No.1

mb_convert_encoding() した後、html_entity_decode() すれば 良さそうに思います。

参考URL:
http://www.php.net/manual/ja/function.html-entity-decode.php
T-k_jp
質問者

補足

返答が遅くなってしまい、本当にすみません。 アドバイス通り、html_entity_decode関数を記述してみましたが文字化けして出力されました。 それで確認の為に©を直打ちしてみたら?と出力されました。 FPDFではコピーライト(©)を出力する事はできないのでしょうか。 申し訳ありませんが再度、ご教授いただけませんでしょうか。 皆さん、宜しくお願いします。 では、失礼します。