PHPでPDF出力 定番とされるTCPDFを使ってみる

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');	
}

?>

 

 

コメント

タイトルとURLをコピーしました