Home > PHP, Sample > TCPDFで日本語を使うサンプル

TCPDFで日本語を使うサンプル

8 月 24th, 2006
2006-10-17 追記
最近知ったんですが、今の所TCPDFでは完全には日本語は使えないようです。
TCPDFで日本語を扱う場合、一部の漢字が文字化けを起こすという話を会社の先輩から聞きました。
実際にやってみても、「名前」と言う字が「吊前」になってしまいます。調べてみると、どうもUTF-8の3バイト目(第3オクテット)が0×0Aの場合、0×0Dに置き換えられてしまうことが原因のようです。
0×0Aは文字コードで言う所のCRで0×0DはLFなので、改行コード周りの問題かと思ったんですがそうでもないらしいです。また、内側でUTF-8からUTF-16BEへ自力で変換を行っている箇所があったので、そこかと思ったんですがmb_convert_encoding()に変えても結果が変わらなかったのでここでもない模様。何が原因なんだろう。

フリーのPDF生成ライブラリである「FPDF」の進化版の「TCPDF」を試してみました。
サンプルを見る限り、日本語を表示しているサンプルがあったし、Unicode対応ということなので日本語も使えるんだなと思ってダウンロードしてみたんですが、パッケージにバンドルされているフリーのフォントだと漢字や記号が表示できず、化けてしまうようです。

tcpdf_jp_bake.jpg

これについては、フリーのTTFフォントを探してきてTCPDF用に変換し、それを使ったら正しく表示できたので、その方法をメモしておきます。
(tcpdf/fonts/ttf2ufm/README.TXTに書かれている内容と同じ処理です。)
今回は「さざなみフォント」というフォントを使わせてもらいました。

  1. 「TCPDF」をダウンロードして適当な場所に展開します。
  2. tcpdf/config/tcpdf_config.phpのK_PATH_MAINとK_PATH_URLを環境に合わせて調整します。
  3. 「さざなみフォント」をダウンロードして適当な場所に展開します。
  4. DOSプロンプトで以下のコマンドを実行します。(おそらく、幾つも警告が出ます)
    tcpdf/fonts/ttf2ufm/ttf2ufm.exe -a -F sazanami-gothic.ttf
  5. 続いて次のコマンドを実行します。(phpのパスが通っていると仮定しています)
    php tcpdf/fonts/ttf2ufm/makefontuni.php sazanami-gothic.ttf sazanami-gothic.ufm
  6. sazanami-gothic.ctg.z、sazanami-gothic.z、sazanami-gothic.phpというファイルが生成されるので、これをtcpdf/fontsの中にコピーします。基となるsazanami-gothic.ttfは不要なようです。
  7. サンプルプログラム「test_unicode.php」等を参考にして、PDFを作成するサンプルを作ります。この時、「$pdf->setHeaderFont()」を呼び出している箇所を以下のように書き換えます。
    「$pdf->setHeaderFont(Array(’sazanami-gothic’, ”, PDF_FONT_SIZE_MAIN));」

以上を実践すると、次のような感じのページができます。

■TCPDFサンプル
PDFのテスト
ソースコード(5.7MB)


2006-09-05 追記

サンプルの配布形態がTCPDFのLGPLライセンスに準拠していなかったので、
準拠するように修正しました。

PHP, Sample , , ,