こんにちは!独学プログラマー&ライターのつぶらやです。
PHPを使用して開発していると
PHPでpdfを出力したい
ブラウザの表示をそのままpdfにしたい
などという時があると思います。
しかし、PHPはひと工夫しないとpdfに変換することは出来ません。
今回はPHPでpdfを作成するための方法を以下の流れでお話します。
pdfライブラリ(TCPDF)の使い方
pdfの出力方法
pdfのダウンロード
それでは早速解説していきます。
pdfを使用するためのライブラリ
PHPでpdf出力をするためには色々なライブラリが存在しますが、今回はインストール不要のTCPDFを使用します。
TCPDFについて
以前はFPDFというライブラリも使用されていたようですが、2018年9月現在確認したところ最新は2015年と古いです。
開発が長い間止まっているライブラリはセキュリティなどの観点から使用しないほうがよいです。
TCPDFを使用する準備
①以下のソースが公開されているGitHubにアクセス
https://github.com/tecnickcom/tcpdf
②以下の図のようにClone of download をクリック→Download ZIPをクリック

③ダウンロードしたZIPファイルを解凍する
④解凍したファイルの名前を「tcpdf」に名前を変更
⑤phpのinclude_pathに配置する
以上で準備完了です。
インストールの必要がないというのは準備が楽ですね。
pdfを出力してみよう
それでは、前項目で設定したTCPDFを使用してpdfをブラウザに出力してみましょう。
以下の内容のtcpdf_test.phpを作成します。
<?php
include "./tcpdf/tcpdf.php"; // include_path配下に設置したtcpdf.phpを読み込む
$tcpdf = new TCPDF();
$tcpdf->AddPage(); // 新しいpdfページを追加
$tcpdf->SetFont("kozgopromedium", "", 10); // デフォルトで用意されている日本語フォント
$html = <<< EOF
<style>
h1 {
font-size: 24px; // 文字の大きさ
color: #ff00ff; // 文字の色
text-align: center; // テキストを真ん中に寄せる
}
p {
font-size: 12px; // 文字の大きさ
color: #000000; // 文字の色
text-align: left; // テキストを左に寄せる
}
</style>
<h1>侍エンジニア</h1>
<p>
今日は侍エンジニアについてお話させていただきます。
</p>
EOF;
$tcpdf->writeHTML($html); // 表示htmlを設定
$tcpdf->Output('samurai.pdf', 'I'); // pdf表示設定
?>
ブラウザの表示結果

注意すべき点は日本語の出力についてです。
デフォルトで用意されている日本語フォントをサンプルのように読み込めば基本的に大丈夫です。
ただ、文字化けする報告などがネットに上がっています。
その場合は作成したtcpdf_test.phpの文字コードが何になっているか確認しましょう。
utf-8でないと文字化けしたり、日本語が全く出力されない場合もあります。
私が確認したとき、うっかりtcpdf_test.phpをsjisで保存して表示されませんでした。
文字コードはとても重要です。
pdfをダウンロードしてみよう
先程はブラウザに表示させました。
最後にアクセスした際にすぐにダウンロードをさせたい場合の方法を書きたいと思います。
全項目で作成したtcpdf_test.phpを使用します。
$tcpdf->Outputの第二引数を変更してください。
tcpdf_test.php
<?php
include "./tcpdf/tcpdf.php";
$tcpdf = new TCPDF();
$tcpdf->AddPage();
$tcpdf->SetFont("kozgopromedium", "", 10);
$html = <<< EOF
<style>
h1 {
font-size: 24px;
color: #ff00ff;
text-align: center;
}
p {
font-size: 12px;
color: #000000;
text-align: left;
}
</style>
<h1>侍エンジニア</h1>
<p>
今日は侍エンジニアについてお話させていただきます。
</p>
EOF;
$tcpdf->writeHTML($html);
$tcpdf->Output('samurai.pdf', 'D'); // 第二引数をDに変更する
?>
結果

samurai.pdfというファイルがダウンロードされました。
※画像のブラウザはchromeを使用しています。
$tcpdf->Output('samurai.pdf', 'D');
第一引数に設定した名前でダウンロードされます。
まとめ
本日はPHPでpdfを使用するシンプルな方法を解説しました。
phpだけでは出来ないことも、ライブラリを使用すれば解決する事も多いです。
少しずつ覚えていければいいですね。
それでは、また。






