PAK85_Projectannai20141123172457879_TP_V
ケーワンブログをご覧の皆様。

はじめまして。

えんDoです。

えんDo
はじめましてなので軽く自己紹介をすると
ぼくの仕事はおもに、社内のシステム開発を担当しています。 よろしくお願いします


はじめてのブログなのでシステム担当らしく「PHPでPDF出力する方法」をご紹介します。

システムを作っていると意外と多いのが

「このページってさ、ボタン押したらPDFとかになる?」

みたいな要望。



「Chromeだったら印刷画面からPDF出力できますよ。」



「いやいや、ヘッダーとかサイドナビとかいらないんだよね。」

「Chromeで出来るんだからできるでしょ?」




「・・・・つくります。」

みたいなやりとり。

今回わが社でそんな要望があり、PHPで実装したので簡単にできる方法をお教えします。


まずはライブラリをダウンロード

今回使うのはtcpdfというライブラリを使います。

サーバーにインストールが必要なく、phpが読み込める場所に丸ごと配置するだけ。

超簡単!!

ダウンロードしたディレクトリにサンプルが大量に入っているのでそれを見ながらプログラミングするだけ・・・


いざ!!プログラミング



// ライブラリを読み込む
require_once('/tcpdf/tcpdf.php');

// PDF オブジェクトを作成
$oPdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');

// ヘッダーフッターの設定
// デフォルトでヘッダーに余計な線が出るので削除
$oPdf->setPrintHeader(false);
$oPdf->setPrintFooter(false);

// 1ページ目を準備
$oPdf->AddPage();

// フォントを指定 ( 小塚ゴシックPro M を指定 )
// 日本語を使う場合は、日本語に対応しているフォントを使う
$oPdf->SetFont('kozgopromedium', '', 10);

// h1 で見出しを出力 ( HTML )
$oPdf->writeHTML('<h1>ケーワン</h1>', false, false, false, false, 'C');


// HTML と CSS でテーブルを作ります
$html = <<< EOF
<style>
table.border th {
font-weight: normal;
border: 1px solid #333;
text-align: center;
background-color: #eee;
}
table.border td {
border: 1px solid #333;
}
</style>
<br />
<br />
<table cellspacing="5">
<tr>
<td width="10%">企業名</td>
<td>株式会社ケーワン・エンタープライズ</td>
<td width="10%">氏   名</td>
<td>ケーワンタロウ</td>
</tr>
<tr>
<td colspan="2" rowspan="2"></td>
<td>電   話</td>
<td>000-0000-0000</td>
</tr>
<tr>
<td>住   所</td>
<td>火星1丁目0-1</td>
</tr>
</table>
<br />
<table cellspacing="0" cellpadding="2" class="border">
<tr>
<th width="20%">氏名</th>
<th width="5%">性別</th>
<th width="5%">年齢</th>
<th width="55%">住所</th>
<th width="15%">電話番号</th>
</tr>
<tr>
<td style="text-align: center;">ケーワンタロウ</td>
<td style="text-align: center;">男</td>
<td style="text-align: center;">17</td>
<td>火星1丁目0-1</td>
<td align="center">000-0000-0000</td>
</tr>
</table>
EOF;

// 作った HTML を書きだす
$oPdf->writeHTML($html, false, false, false, false, 'L');

// PDF を出力 ( I = ブラウザ出力, D = ダウンロード, F = ローカルファイルとして保存, S = 文字列として出力 )
$oPdf->Output("sample.pdf", "I");


こんな感じですかね。。。

style とかHTMLタグは使えるやつと使えないやつがあるっぽい。。。

$oPdf->Output(“sample.pdf”, “I”);

これよりも前にPHPの標準出力になにか出てるとエラーになってしまうので。

出力する前に

ob_end_clean();

を入れると無視してくれます。


以上です


この記事を書いた人

えんDo
えんDo
ビールと日本酒とサッカーが大好きなプログラマーです。休日は少年サッカーのコーチをしています。夢はサッカー選手です(笑)