メルマガ・ステップメール基本システム

[PHP] TCPDFを入れてみた

PHPを使って携帯電話などからデータを入力し、PCからサイトにアクセスして印刷する、というものを基礎体温管理などで使っていたのですが、やはりWebサイトを印刷させるだけじゃ印刷結果が見栄え悪いし、なにより画面も印刷することを前提としたレイアウトにしないといけないので微妙な感じ。

じゃあ、Webサイトで表示するものとは別に、印刷用にPDF出力させてみよう、と思い立って、早速ライブラリを探してみました。

PDFLibというのが有名らしいけど、これはサーバへインストールが必要らしいので、レンタルサーバで使えないのでパス。FPDFというクラスライブラリを見つけたけど、これは日本語が使えないらしいのでパス。FPDFに日本語を扱える環境を追加するMBFPDFというものがあったけど、UTF-8が扱えないらしいのでパス。

日本語が扱えてUTF-8に対応したものはないかとさらに探してみると、ありました。TCPDF。これもクラスライブラリなので、このクラスを使いたいスクリプトと同じフォルダに入れておけば、そのまま使えるのがヨイ!

ということで、まずはダウンロード。

PHP4向けとPHP5向けがありますが、ウチのレンタルサーバはPHP4なのに対し、PCに入れているのはPHP5なので、PHP4をダウンロードして使ってみました。PHP5上でPHP4用のTCPDFを使っても、特に問題はない模様。

ダウンロードしたZIPファイルを展開し、必要なファイルのみPHPスクリプトのフォルダにコピーします。ウチの環境では、以下のファイルをコピーしました。

  • cacheフォルダ
  • configフォルダ
  • fontsフォルダ
  • barcodes.php
  • html_entity_decode_php4.php
  • htmlcolors.php
  • tcpdf.php
  • unicode_data.php

さて、このTCPDFは日本語対応とは言うものの、標準では日本語フォントが入っていないらしいので、日本語フォントをTCPDF用に作らないといけません。とりあえず動作確認用にフリーのTTFフォントを落としてきて、入れてみました。

フォントの作り方はいろんなサイトで紹介されていますが、一応ここでも紹介。TCPDF4.0.02 for PHP4での作成方法です。全てDOSプロンプト(コマンドプロンプト)にて実行。

TTFフォントファイル名を [ font.ttf ]、TCPDFをコピーしたフォルダを [ %TCPDF_ROOT% ] とします。

TTFフォントファイルを [ %TCPDF_ROOT%\fonts\ttf2ufm ] にコピー後、以下を実行。

  > cd %TCPDF_ROOT%\fonts\utils
  > ttf2ufm -a -F font.ttf

font.afm、font.t1a、font.ufmの3つのファイルが作成されます。

次にPHP用に変換。

  > php –q makefont.php font.ttf font.ufm

font.php、font.ctg.z、font.zの3つのファイルができるので、これを [ %TCPDF_ROOT%\fonts ] フォルダにコピー。

フォント作成中に大量のワーニングが出ますが、特に気にしなくても大丈夫そうな雰囲気。ただ一部の文字で文字化けなどが発生するけれど、現状はどうしようもないらしい。

ここまでで下準備は完了。

以下のスクリプトを実行して、PDFファイルとしてブラウザに表示されればOK。

<?php
require_once( './tcpdf.php' );
$pdf = new TCPDF( "L", "mm", "A4", true, "UTF-8" );
$pdf->AddPage();
$pdf->SetFont( "font", "", 16 );
$pdf->Text( 10, 10, "こんにちは!PDF!" );
$pdf->Output("test.pdf", "I");
?>

あとはTCPDFに同梱のドキュメントとにらめっこするべし!(笑)

さて、まずは折れ線グラフを出力できるようにがんばるか・・・。

スポンサーリンク

この記事をシェア

アカウントをフォロー