目次
■インストール
composerでインストール
$ composer require mpdf/mpdf
composer.json
{
"require": {
"twig/twig" : "1.*",
"mpdf/mpdf": "^7.0"
}
}
■日本語対応
※「残り」「坂本」「変更」等がおかしい。
https://ipafont.ipa.go.jp/old/ipafont/download.html
TTFファイルの「4書体パック」をダウンロード&解凍後、以下のTTFファイル(4ファイル)をapplication/vendor/mpdf/mpdf/ttfontsに保存します。
ipag.ttf
ipagp.ttf
ipam.ttf
ipamp.ttf
■設定
application/vendor/mpdf/mpdf/src/Config/FontVariables.php
public function __construct()
{
$this->defaults = [
'fontdata' => [
/* CJK fonts */
"sun-exta" => [
'R' => "Sun-ExtA.ttf",
'sip-ext' => 'sun-extb', /* SIP=Plane2 Unicode (extension B) */
],
"sun-extb" => [
'R' => "Sun-ExtB.ttf",
],
"unbatang" => [/* Korean */
'R' => "UnBatang_0613.ttf",
],
// 追記
"ipa" => [
'R' => "ipamp.ttf", // 使用するフォントを記述
],
],
];
application/vendor/mpdf/mpdf/src/Language/LanguageToFont.php
public function getLanguageOptions($llcc, $adobeCJK)
{
switch ($lang) {
・・・
case "ja":
case "jpn": // Japanese HIRAGANA KATAKANA
if ($adobeCJK) {
$unifont = "ipa,sjis"; // 変更
} else {
$unifont = "ipa"; // 変更
}
break;
■使い方
application/controllers/Pdf.php
/*
* PDF作成
*/
public function makePdf(){
$data = [];
// ファイル名を設定
$filename = 'sample.pdf';
// CSSファイル指定
$css = file_get_contents($this->config->base_url() . "/css/pdf.css");
// mPDF設定
$mpdf = new \Mpdf\Mpdf(['mode' => 'ja',
'format' => 'A4',
'margin_left' => 3,
'margin_right' => 3,
'margin_top' => 2,
'margin_bottom' => 2,
]);
// テンプレート指定
$template = 'template/pdf/pdf.twig';
// レンダリング後の出力を取得
$html = $this->twig->render($template, $data);
$mpdf->WriteHTML($css, 1); // 1:CSS指定
$mpdf->WriteHTML($html, 2); // 2:HTML指定
$mpdf->setTitle($filename);
$mpdf->Output($filename, 'D'); // D:ファイル名を指定してダウンロード
// $mpdf->Output($filename, 'I'); // I:ファイル名を指定してブラウザに出力
}