Как добавить пользовательские шрифты в kartik yii-mpdf в yii2

Я знаю, как это сделать, чтобы он работал в локальной среде, я добавил шрифты .ttf в /vendor/mpdf/mpdf/ttfonts, а затем добавил

$this->fontdata = array(
"calibri" => array(
'R' => 'calibri.ttf',
'B' => 'calibrib.ttf',
)
...

to /vendor/mpdf/config-fonts.php

Итак, теперь я могу использовать шрифт Calibri в своих pdf-файлах, но что мне нужно сделать, чтобы использовать его правильно не только локально, но и после composer update?


person Егор Лебедев    schedule 17.07.2017    source источник


Ответы (1)


Решение, которое я нахожу:

1) поставить шрифты .ttf в /your/path/to/fonts/dir, добавить custom_config.php с таким содержимым:

$this->fontdata["calibri"] = [
    'R' => 'calibri.ttf',
    'B' => 'calibrib.ttf',
];

2) в common/configs указать путь с кастомными шрифтами и к файлу с кастомным конфигом

'mpdfCustomFontsPath' => /your/path/to/custom_config.php,
'mpdfCustomFonts' => /your/path/to/fonts/dir,

3) Где-то в вашем коде перед созданием экземпляра kartik/Pdf сделайте следующее:

$customFontsConfig = Yii::$app->params['mpdfCustomFontsPath'];
$customFonts = Yii::$app->params['mpdfCustomFonts'];
define("_MPDF_SYSTEM_TTFONTS_CONFIG", $customFontsConfig);
define("_MPDF_SYSTEM_TTFONTS", $customFonts);

И это будет работать, потому что mpdf будет проверять _MPDF_SYSTEM_TTFONTS_CONFIG и _MPDF_SYSTEM_TTFONTS при обработке html в pdf.

person Егор Лебедев    schedule 17.07.2017