【PHP】pdf出力で任意のフォントを使う

今回はtfpdfを利用したpdf出力で、フォントを変更する方法を備忘録としてメモします。

※php8.0.25で動作確認。

tfpdfのダウンロード

http://www.fpdf.orgへアクセスして、HomeタブのWhat languages can I use?から、UTF-8 supportのリンクをクリックします。

すると、tfpdfの使用例とともにzipファイルのダウンロードリンクがあるので、そちらからダウンロードします。

Descriptionにも記載されていますが、従来のFPDFにUTF-8サポートを追加したクラスのようです。

日本語でpdfを出力しようとしているなら問題ないと思いますが、mbstringが有効である必要があることに注意が必要です。

(mbstringはphp.iniファイルで設定が可能です。)

ダウンロードして解凍した中身は以下の通り。

  • HelloWorld.txt
  • info.html
  • README.txt
  • tfpdf.php
  • ex.html
  • ex.php
  • font
    • 各種フォントファイル.php
    • unifont
      • 各種フォントファイル.ttf
      • ttfonts

デフォルトフォントでOKなら、japanese.phpを使用するだけで大丈夫ですが、文字コードがSJISで扱いづらいので今回は使用しません。このままtfpdf.phpを利用します。

以下、このようなフォルダ構成になっているとします。

/your_path/
├tfpdf.php
├font/
 └unifont/

フォントのダウンロード

例として、「rounded-mplus-1c-medium」をダウンロードします。

ダウンロードしたフォントファイルがttfファイルであることを確認して、font/unifont直下へ格納します。

ここでは、rounded-mplus-1c-medium.ttfをfont/unifont直下へ格納しました。

使用方法

<?php
        require('/your_path/tfpdf.php');
        $pdf=new tFPDF('P','pt','A4');
	$pdf->AddFont('Rounded', '', 'rounded-mplus-1c-medium.ttf',true);
	$pdf->AddPage();

	// 設定
	$nowX = 20;
	$nowY = 30;
	
	$pdf->SetFont('Rounded', '', 16);
	$pdf->SetXY($nowX, $nowY);
	$pdf->MultiCell(0, 50,'こんにちは!', 'B', 'L', '');
        $pdf->Output();
?>