fpdi-tfpdfのインストール
インストール自体は基本的に以下で可能
composer require setasign/fpdi-tfpdf:2.2
いくつか機能が分かれているようなのでcomposer経由でないと面倒な設定が必要になる。フォントファイル(.ttf)を用意して配置する必要がある。
IPA明朝あたりがライセンス的にも使いやすい。
https://ipafont.ipa.go.jp/old/ipafont/download.html
vender/setasign/tfpdf/font/unifont
以下に配置するのが一番問題が少ないようだ(ちょっと抵抗があるが)以下が動作サンプル
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
use setasign\Fpdi\Tfpdf\Fpdi;
$pdf=new Fpdi();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
// 配置したフォントファイル名を指定する
$pdf->AddFont('IPA','','ipamp.ttf',true);
$pdf->SetFont('IPA','',14);
$pdf->Write(8,'Japanese: 日本語テスト');
$pdf->Output();
ここまでなら
http://www.fpdf.org/
のUTF-8 Supportからダウンロードして直接配置するだけでも動作する。
ただしテンプレートファイルに埋め込んで出力するような場合FPDIが別途必要になる(composer経由ならいい感じにしてくれる)
埋め込んだ場合のやり方は以下参照。
setSourceFileを使用する。
https://www.setasign.com/products/fpdi/about/
Ellipseなどを使用している場合以下のスニペット。
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
use setasign\Fpdi\Tfpdf\Fpdi;
class myFPDF extends Fpdi
{
function Circle($x, $y, $r, $style='D')
{
$this->Ellipse($x,$y,$r,$r,$style);
}
function Ellipse($x, $y, $rx, $ry, $style='D')
{
if($style=='F')
$op='f';
elseif($style=='FD' || $style=='DF')
$op='B';
else
$op='S';
$lx=4/3*(M_SQRT2-1)*$rx;
$ly=4/3*(M_SQRT2-1)*$ry;
$k=$this->k;
$h=$this->h;
$this->_out(sprintf('%.2F %.2F m %.2F %.2F %.2F %.2F %.2F %.2F c',
($x+$rx)*$k,($h-$y)*$k,
($x+$rx)*$k,($h-($y-$ly))*$k,
($x+$lx)*$k,($h-($y-$ry))*$k,
$x*$k,($h-($y-$ry))*$k));
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c',
($x-$lx)*$k,($h-($y-$ry))*$k,
($x-$rx)*$k,($h-($y-$ly))*$k,
($x-$rx)*$k,($h-$y)*$k));
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c',
($x-$rx)*$k,($h-($y+$ly))*$k,
($x-$lx)*$k,($h-($y+$ry))*$k,
$x*$k,($h-($y+$ry))*$k));
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c %s',
($x+$lx)*$k,($h-($y+$ry))*$k,
($x+$rx)*$k,($h-($y+$ly))*$k,
($x+$rx)*$k,($h-$y)*$k,
$op));
}
}
Fpdiの代わりにmyFPDFを使用する。
参考
http://www.fpdf.org/
https://kantaro-cgi.com/blog/php/fpdf_fpdi_utf8_japanese.html
https://landhere.jp/blog/a176.html
https://github.com/Setasign/FPDI/blob/master/local-tests/tfpdf.php