[PHP] TCPDFを入れてみた
PHPを使って携帯電話などからデータを入力し、PCからサイトにアクセスして印刷する、というものを基礎体温管理などで使っていたのですが、やはりWebサイトを印刷させるだけじゃ印刷結果が見栄え悪いし、なにより画面も印刷することを前提としたレイアウトにしないといけないので微妙な感じ。
じゃあ、Webサイトで表示するものとは別に、印刷用にPDF出力させてみよう、と思い立って、早速ライブラリを探してみました。
PDFLibというのが有名らしいけど、これはサーバへインストールが必要らしいので、レンタルサーバで使えないのでパス。FPDFというクラスライブラリを見つけたけど、これは日本語が使えないらしいのでパス。FPDFに日本語を扱える環境を追加するMBFPDFというものがあったけど、UTF-8が扱えないらしいのでパス。
日本語が扱えてUTF-8に対応したものはないかとさらに探してみると、ありました。TCPDF。これもクラスライブラリなので、このクラスを使いたいスクリプトと同じフォルダに入れておけば、そのまま使えるのがヨイ!
ということで、まずはダウンロード。
TCPDF公式サイト
PHP4向けとPHP5向けがありますが、ウチのレンタルサーバはPHP4なのに対し、PCに入れているのはPHP5なので、PHP4をダウンロードして使ってみました。PHP5上でPHP4用のTCPDFを使っても、特に問題はない模様。
ダウンロードしたZIPファイルを展開し、必要なファイルのみPHPスクリプトのフォルダにコピーします。ウチの環境では、以下のファイルをコピーしました。
さて、このTCPDFは日本語対応とは言うものの、標準では日本語フォントが入っていないらしいので、日本語フォントをTCPDF用に作らないといけません。とりあえず動作確認用にフリーのTTFフォントを落としてきて、入れてみました。
フォントの作り方はいろんなサイトで紹介されていますが、一応ここでも紹介。TCPDF4.0.02 for PHP4での作成方法です。全てDOSプロンプト(コマンドプロンプト)にて実行。
TTFフォントファイル名を [ font.ttf ]、TCPDFをコピーしたフォルダを [ %TCPDF_ROOT% ] とします。
フォント作成中に大量のワーニングが出ますが、特に気にしなくても大丈夫そうな雰囲気。ただ一部の文字で文字化けなどが発生するけれど、現状はどうしようもないらしい。
ここまでで下準備は完了。
以下のスクリプトを実行して、PDFファイルとしてブラウザに表示されればOK。
あとはTCPDFに同梱のドキュメントとにらめっこするべし!(笑)
さて、まずは折れ線グラフを出力できるようにがんばるか・・・。
じゃあ、Webサイトで表示するものとは別に、印刷用にPDF出力させてみよう、と思い立って、早速ライブラリを探してみました。
PDFLibというのが有名らしいけど、これはサーバへインストールが必要らしいので、レンタルサーバで使えないのでパス。FPDFというクラスライブラリを見つけたけど、これは日本語が使えないらしいのでパス。FPDFに日本語を扱える環境を追加するMBFPDFというものがあったけど、UTF-8が扱えないらしいのでパス。
日本語が扱えてUTF-8に対応したものはないかとさらに探してみると、ありました。TCPDF。これもクラスライブラリなので、このクラスを使いたいスクリプトと同じフォルダに入れておけば、そのまま使えるのがヨイ!
ということで、まずはダウンロード。
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に同梱のドキュメントとにらめっこするべし!(笑)
さて、まずは折れ線グラフを出力できるようにがんばるか・・・。
« [FF11] タイダルタリスマン | トップページ | 朝からツイテナイ »
コメント
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/189342/42229432
この記事へのトラックバック一覧です: [PHP] TCPDFを入れてみた:

自前のフォントでもよいと思いますが、ちなみに最近のバージョンでは
デフォルトで日本語(日中韓フォント)が使えるようになっています。
http://www.monzen.org/Refdoc/tcpdf/
投稿: | 2008年12月 2日 (火) 08時57分
>名無しさん
自前フォントでは、PDFにフォントが埋め込まれて数MBのファイルになってしまうため、デフォルトで使えるフォントを使うことでファイルサイズを小さくできるのであれば、願ったり適ったりです。
タイミングを見てバージョンアップし、その辺確認してみます。
情報ありがとうございました。
投稿: ヴェル | 2008年12月 2日 (火) 10時00分