2018年12月、記事の微修正および追記を行っています。
PHPを使って携帯電話などからデータを入力し、PCからサイトにアクセスして印刷する、というものを自作ツールなどで使っていたのですが、やはりWebサイトをそのまま印刷しても見栄えが悪いし、なにより画面も印刷することを前提としたレイアウトにしないといけないので微妙な感じ。
じゃあ、Webサイトで表示するものとは別に、印刷用にPDF出力させてみよう、と思い立って、早速ライブラリを探してみました。
PDFLibというのが有名らしいけど、これはサーバへインストールが必要らしく、レンタルサーバで使えないのでパス。FPDFというクラスライブラリを見つけたけど、これは日本語が使えないらしいのでパス。FPDFに日本語を扱える環境を追加するMBFPDFというものがあったけど、UTF-8が扱えないらしいのでパス。
日本語が扱えてUTF-8に対応したものはないかとさらに探してみると、ありました。TCPDF。これもクラスライブラリなので、このクラスを使いたいスクリプトと同じフォルダに入れておけば、そのまま使えるのがヨイ!
TCPDFのダウンロードと初期設定
yum等のパッケージ管理システムが使える環境の場合は、後述の「yumが使える環境でのインストール」を参考にしてください。
まずはTCPDFのパッケージをダウンロードします。2018年現在、GitHubからダウンロードできるようになっています。
PHP4向けとPHP5向けがありますが、ウチのレンタルサーバはPHP4なのに対し、PCに入れているのはPHP5なので、PHP4をダウンロードして使ってみました。PHP5上でPHP4用のTCPDFを使っても、特に問題はない模様。
公式サイト左側のメニューからGitHubをクリックすると別ウィンドウが開き、TCPDFのダウンロードページが開きます。緑色のボタン「Clone or download」をクリックし、Download ZIPをクリックすることで、TCPDF一式がダウンロードできます。
ダウンロードしたTCPDFファイル一式は、解凍後、PHPからアクセスできる任意の場所にコピーしておいてください。
この枠内は古い情報です。参考までに残しています。
ダウンロードした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 ] フォルダにコピー。
フォント作成中に大量のワーニングが出ますが、特に気にしなくても大丈夫そうな雰囲気。ただ一部の文字で文字化けなどが発生するけれど、現状はどうしようもないらしい。
yumが使える環境でのインストール
yumなどのパッケージ管理システムが使える場合は、以下のコマンドだけで必要なライブラリも含め一式をインストールできます。
# yum install php-tcpdf
yumでインストールすると、CentOS6の場合、TCPDF一式は /usr/share/php/tcpdf の下に展開されます。念のため、rpmコマンド等でインストール先を確認しておくとGood!
# rpm -qs php-tcpdf
PHPで動作確認
ここまでで下準備は完了。今は日本語フォントもデフォルトでインストールされるので、本当に簡単になりました。
あとは、以下のスクリプトを作成してUTF-8で保存し、PDFファイルとしてブラウザに表示されればOK。
<?php
require_once( 'TCPDFインストール先パス/tcpdf.php' );
$pdf = new TCPDF( "L", "mm", "A4", true, "UTF-8" );
$pdf->AddPage();
$pdf->SetFont( "kozgopromedium", "", 16 );
$pdf->Text( 10, 10, "こんにちは!PDF!" );
$pdf->Output("test.pdf", "I");
?>
あとはTCPDFに同梱のドキュメントとにらめっこするべし!(笑)
コメント