HTMLをそのままPDFにできるPHPライブラリ TCPDF

HTMLをそのままPDFにできるPHPライブラリ TCPDF

こんにちは。sagaraです。現在携わっているPHPのプロジェクトで、領収書をPDF出力する処理があって、 どういうプロセスで生成しているのか見てみたところ、 PDF作成ライブラリ TCPDFを使用していました。

というわけで、今回はPDFを作成するライブラリについてのお話です。

PDFを作成するライブラリ

といったものがあります。上記のうち、HaruPDFとPDFlibは拡張モジュールでインストールが必要ですが、 FPDFとTCPDFはクラスライブラリなのでサーバーの適当な場所に配置すればいいです。
後者の方が手軽に始められますね。

TCPDFでPDF作成!

GitHubからダウンロードできます。
https://github.com/tecnickcom/tcpdf

HTML(XHTML+CSS)そのままPDFに

<?php
include "./TCPDF/tcpdf.php"; //ライブラリの読み込み
$tcpdf = new TCPDF("Portrait");
$tcpdf->AddPage();
$tcpdf->SetFont("kozminproregular", "", 10);
$html = <<< EOF
<style>
  h1 {
    font-size: 16px;
    color: #333;
  }
  ul {
    list-style-type: none;
  }
  ul li {
    text-decoration: underline;
  }
</style>
<h1>バシャログ。</h1>
<ul>
    <li>スマホサイト制作</li>
    <li>HTML/CSS</li>
    <li>JavaScript</li>
    <li>WordPress</li>
    <li>PHP</li>
    <li>gulp</li>
</ul>
EOF;

$tcpdf->writeHTML($html);
$tcpdf->Output("test.pdf");

ライブラリを読み込んでTCPDFクラスをnewしたら、
AddPage()でページ追加、SetFont()でフォントを設定。
セルや罫線を引くメソッドなどで作成していけますが、
TCPDFの場合はHTML(XHTML/CSS)をそのまま放り込んで出力できます。

すべてのタグやスタイルに対応しているわけではなく、
例えばCSSの:nth-childや:afterなどの擬似クラスは使えなかったです。

TCPDF(最新の更新日は2017年4月)には最初から日本語フォントが入っていて、
小塚ゴシック(kozgopromedium)と小塚明朝(kozminproregular)が使えます。

公式にはサンプルが豊富に載っているので、参考になるかと思います。
https://tcpdf.org/examples/

すでにある領収書のテンプレートに数値をのせて出力

既存のPDF文書の上に文字を載せるためには、FPDIを追加で読み込ませる必要があるようです。

$tcpdf = new FPDI();
$tcpdf->AddPage();
$tcpdf->setSourceFile('./templates/receipt.pdf'); //テンプレート読み込み
$index = $tcpdf->importPage(1);
$tcpdf->useTemplate($index); //テンプレートをページに適用

$tcpdf->SetFont("kozgopromedium", "", 12);
$tcpdf->MultiCell(35, 5, $total, 0, 'R', 0, 1, 150, 100);
// ...

$tcpdf->Output("receipt.pdf", "D");

参考にさせていただきました。

PHPでPDF帳票を出力する方法(TCPDF + FPDI)

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ