PHP を利用して PDF ファイルを作ってみる

Yossy
2023-02-22
2023-02-22

PHP を使って PDF を作成してみようと思い調べてみました。tcpdf ライブラリが簡単だったので紹介してみます。

■ tcpdf のサイト
https://tcpdf.org/
https://github.com/tecnickcom/tcpdf

tcpdf は、HTML を与えると、それをPDFに変換してくれます。すべてのHTMLに対応している訳ではないようなので、どのタグが使えるかは、試してみる必要はありそうです。

■  composer を利用して tcpdf ライブラリをインストール

composer require tecnickcom/tcpdf

準備完了!

■ コードを記述します。

まずは、tcpdf のコンストラクタを new します。いろいろ引数が指定できるようです。詳細はこちらに記載があります。

https://tcpdf.org/docs/srcdoc/TCPDF/classes-TCPDF/#method___construct

コンストラクタでは、用紙の向き、単位(cm/mm など)、用紙サイズ(A4 など)が指定できます。

以下、PDF を出力するコードを書いてみます。

<?php
require_once('./vendor/tecnickcom/tcpdf/tcpdf.php');

// 用紙の向き:縦(L)、単位:mm、用紙サイズ:A4 で作成
$tcpdf = new TCPDF('L', "mm", 'A4');

// カスタムヘッダーを削除(上下余白を消す)、ページを作成
$tcpdf->setPrintHeader(false);
$tcpdf->setPrintFooter(false);
$tcpdf->AddPage();

// HTML を PDF に変換します。
$html = '<p>hello world!</p>';
$tcpdf->WriteHTML($html, true, 0, false, true, 'L');

// 変換してPDFをファイルに保存
$fileName = rtrim(getcwd(), '\\/').DIRECTORY_SEPARATOR.'sample.pdf';
$tcpdf->Output($fileName, 'F');

非常にシンプルに書けました。実行すると、「hello world!」と書かれたPDFができました。

HTMLを文字列で指定できれば、PDF に変換できるので、例えば、Twig などのテンプレートエンジンを利用してHTMLを取得して投げるなどすると、請求書とか作るのはラクチンかもしれません。

$fileName = rtrim(getcwd(), '\\/').DIRECTORY_SEPARATOR.'sample.pdf';

この部分、ややこしく見えるのですが、tcpdf  が PDF の出力先のファイル名をフルパスで書くことを要求するのと、Windows/Linux でファイルパスの指定方法が異なることを吸収するため、こんな書き方にしました。

他にもいろいろできそうなので、公式サイトのサンプルをご覧いただいて、色々試してみてはいかがでしょうか?

https://tcpdf.org/examples/