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