LoginSignup
4
4

More than 5 years have passed since last update.

mpdfでIPAゴシックを使用する方法(Mpdf 7版)

Last updated at Posted at 2017-08-22

概要

mpdf7で外部フォントを指定する方法となります。

※参考にさせていただいた記事、「mpdfで利用するfontをライブラリ外から指定する方法
を、mpdf7で可能にするものになります。

動作環境
PHP PHP7
mpdf 7.0.0-beta2 (https://github.com/mpdf/mpdf/tree/v7.0.0-beta2)

手順

IPAゴシックを設置

下記URL
http://ipafont.ipa.go.jp/old/ipafont/IPAGTTC00303.php
などから、zipをダウンロードして解凍した「ipag.ttc」を、
たとえば、/path/to/ipag/ttcfontフォルダに置く。

IPAゴシックを使うMpdfを初期化するサンプルコード

Util/PdfUtils.php
<?php
namespace App\Util;

class PdfUtils {
    /** IPAゴシックフォントを置いたフォルダのパス */
    const IPAG_FONT_FOLDER_PATH = '/path/to/ipag/ttcfont';

    /**
     * IPAゴシックフォントが利用可能のMpdfインスタンスを返す
     * @param array Mpdfのconfig
     * @return Mpdf IPAゴシックフォントが利用可能のMpdfインスタンス
     */
    public static function initIpagFontAvailableMpdf($config){
        $config['fontDir'] = [
            (new \Mpdf\Config\ConfigVariables)->getDefaults()['fontDir'],
            PdfUtils::IPAG_FONT_FOLDER_PATH,
        ];
        $config['mode'] = 'ja+aCJK';

        $mpdf = new \Mpdf\Mpdf($config);

        $ipa_fonts = [
            'ipag' => [
                'R' => 'ipag.ttc',
                'TTCfontID' => ['R' => 1],
            ],
            'ipagp' => [
                'R' => 'ipag.ttc',
                'TTCfontID' => ['R' => 2],
            ],
        ];
        foreach($ipa_fonts as $k => $v){
            $mpdf->fontdata[$k] = $v;
            $mpdf->available_unifonts[] = $k;
            $mpdf->default_available_fonts[] = $k;
            $mpdf->BMPonly[] = $k;
        }
        $mpdf->SetDefaultFont($config['default_font']);
        return $mpdf;
    }
}

↑Utilの呼び出し例

呼び出し例
use App\Util\PdfUtils;

//pdf設定
$mpdf_config = [
    'mode' => 'ja',
    'format' => 'A4-L',
    'default_font_size' => 0,
    'default_font' => 'ipag',
    'margin_left' => 3,
    'margin_right' => 3,
    'margin_top' => 3,
    'margin_bottom' => 3,
    'margin_header' => 8,
    'margin_footer' => 8,
    'orientation' => 'P',
];

//$mpdf = new \Mpdf\Mpdf($mpdf_config); と書く代わりに↓でインスタンスを取得する
$mpdf = PdfUtils::initIpagFontAvailableMpdf($mpdf_config);

$mpdf->WriteHTML('<html><body>あいうえお</body></html>');
$pdf = $mpdf->Output(null, 'S');

参考記事

mpdfで利用するfontをライブラリ外から指定する方法
http://qiita.com/kunihiko_sugiura/items/7e33cd6490ea53a1b87d

mpdf/tests/Mpdf/ConfigurationTest.php
https://github.com/mpdf/mpdf/blob/9da7df98cc0cc2ff158ba7207a1324db222f04ee/tests/Mpdf/ConfigurationTest.php

所感など

Mpdfでは、まだotf形式のフォントが使えない様子。いまのところ古いttf(ttc)があるものしかいまのところ有効でないです。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4