PHPでウェブアプリを作る際、PDFで出力をする場面が求められることが多々あります。
PDFの生成が出来ると、各帳票の生成も可能となり自由度が一気に増します。
試しにと使ってみたのがTCPDFというライブラリ。インストール不要とのことで気軽に利用できるか、試してみます。
1.TCPDFのダウンロード。downloadボタンよりZIPファイルをダウンロード。
2.解凍したら、フォルダ名を「tcpdf」にリネーム。
3.ウェブサーバーへアップロード。
4.tcpdfフォルダ直下にあるtcpdf.phpをインクルードして使います。
<?php include($_SERVER['DOCUMENT_ROOT'] . '/tcpdf/tcpdf.php'); // include_path配下に設置したtcpdf.phpを読み込む $tcpdf = new TCPDF(); $tcpdf->AddPage(); // 新しいpdfページを追加 $tcpdf->SetFont("kozgopromedium", "", 10); //日本語フォント。デフォルトで用意されたもの。 $html = <<< EOF <style> h1{ font-size: 32px; //文字の大きさを指定 color: #ff0000; //文字の色を指定 text-align: center; //テキストの位置を指定 } p{ font-size: 13px; color: #000000; text-align: left; } </style> <h1>PDFサンプルファイル</h1> <p>インストールを必要としないTCPDFを使ってもPDFファイル。</p> <p>PDFの生成が出来ると、各帳票の生成も可能となり自由度が一気に増します。</p> EOF; $tcpdf->writeHTML($html); //表示htmlを設定 $tcpdf->Output('sample.pdf', 'I'); //ファイル名を指定。 ?>
5.上記ソースを記述したファイルをアップロード。あらら簡単。見事にPDFが生成されています。
6.文字化けもいくつか報告があるようですが、ファイル生成時の文字コードはUFT-8であることがお勧めの様です。
7.アクセス時、PDFをダウンロードさせたい場合は、下記の第二引数を”D”にする。
$tcpdf->Output('sample.pdf', 'D');
とても簡単ですね。お試しください。
TCPDF各種設定
スタンダートと呼んでも良いだろうと思われる設定は以下の通り。
$orientation = 'Portrait'; // 用紙の向き Portrait(縦)OR Landscape(横) $unit = 'mm'; // 単位 $format = 'A4'; // 用紙フォーマット $unicode = true; // ドキュメントテキストがUnicodeの場合にTRUEとする $encoding = 'UTF-8'; // 文字コードの設定 $diskcache = false; // ディスクキャッシュを使うかどうかを指定 $tcpdf = new TCPDF($orientation, $unit, $format, $unicode, $encoding, $diskcache);
フッターとヘッダーの罫線を
// 印刷ヘッダーを表示しない $tcpdf->setPrintHeader(false); // 印刷フッターを表示しない $tcpdf->setPrintFooter(false);
自動改ページ
// 自動改ページをONにする $margin = 5; $tcpdf->SetAutoPageBreak(true, $margin);
日本語フォント(デフォルトで使えるもの)
$tcpdf->SetFont("cid0jp", "", 10); //kozgopromedium //kozminproregular //cid0jp
改ページタイミング
帳票など一度に複数の帳票を出力する際、テキストの長さにとらわれず、一定の箇所にて改ページ処理を行いたいもの。それが以下のソースを置くことで実現。
<br pagebreak="true"/>
ブラウザにそのまま表示
header('Content-Type: application/pdf'); header("Content-Disposition: inline; filename*=UTF-8''".rawurlencode($fileName)); echo $pdfData;
PDFファイルをダウンロード
// ファイルを出力 $fileName = 'sample.pdf'; $pdfData = $tcpdf->Output(rawurlencode($fileName), 'S'); // ダウンロードさせる header('Content-Type: application/octet-stream', false); header("Content-Disposition: attachment; filename*=UTF-8''".rawurlencode($fileName)); echo $pdfData;
出力・保存・ダウンロード設定
$filename = $date.".".$auction_code.".pdf"; $filePath = "../Folder/".$filename; $tcpdf->writeHTML($html); //表示htmlを設定 $tcpdf->Output($filePath, 'F'); //F(保存)、I(表示)、D(ダウンロード)pdf表示設定
複数ファイルを保存する
複数ファイルを保存するスクリプト。サンプルは以下の通り。
<?php include($_SERVER['DOCUMENT_ROOT'] . '/tcpdf/tcpdf.php'); for($i=0; $i<5; $i++){ $tcpdf = new TCPDF(); $tcpdf->AddPage(); // 新しいpdfページを追加 $tcpdf->SetFont("kozgopromedium", "", 10); $html = <<< EOF <h2>資料</h2> <p>{$i}</p> <br pagebreak="true"/> EOF; $FileName = $i."abc.pdf"; $tcpdf->writeHTML($html); $tcpdf->Output($FileName, 'F'); } ?>
コメント