PDF出力にTCPDFを使う。

らPDFの出力にFPDFとMBFPDFというライブラリを利用していたが、
出力するデータの文字コードをShift-JISに変換する必要があって(UTF-8環境)、
JIS第3水準・第4水準あたりの漢字が出力できなかった。

で、人名の出力に利用していたので、困ったなということになって・・・、
UTF-8でPDFを出力できるライブラリがありました。
これで、エンコードの必要がなくて、とりあえず見たところでは、
JIS第3水準・第4水準の漢字までほぼ文字化けせずに出力できている模様。

標準で日本語にも対応していて、なぜもっと早く見つけられなかったんだ・・・と悔しいッ!

TCPDFの公式サイト

↓こちらで日本語での利用について詳しく解説されています。
MONZEN.ORG(TCPDFに関するリファレンス・ドキュメント)

使い方も簡単で、TCPDF一式をダウンロードして、サーバーにそのままコピーして、
ライブラリファイルをincludeするだけ。
フォント追加用ユーティリティも付属していて、必要なフォントも無事追加できました。
<?php
//tcpdf.phpを読み込む
require_once('pdf/tcpdf.php');
//ページの設定
$pdf = new TCPDF( "P", "mm", "A4", true, "UTF-8" );
//フォントの設定
$pdf->SetFont('kozminproregular','',14);
//ヘッダーとフッターを消すよ
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

$pdf->AddPage();
//出力するところ
$pdf->AliasNbPages();
$pdf->Write(10,$pageno.'/'.$pdf->getAliasNbPages());

$str = "PDFが出力できるよ。";
$pdf->Write(5,$str);

$filename = date('Ymd')."label.pdf";
$pdf->Output($filename,'D');
?> 
PDFを出力する時に、 "TCPDF ERROR: Some data has already been output, can't send PDF file"のエラーがでる場合は、 $pdf->Output();の直前に
 ob_end_clean();
を追加すると解決しました。
Comments

コメントする