Mpdf не может использовать пользовательские шрифты в CakePHP - PullRequest
1 голос
/ 07 ноября 2019

Я хочу реализовать два пользовательских шрифта для моего документа PDF в моем приложении CakePHP. Я использую документацию, но шрифт по умолчанию всегда рисуется.

Я пытался реализовать его через поле параметров cakepdf. это запускает конструктор mpdf, и я знаю, что пути к файлам верны, но ничего не изменилось

$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];
$fontDirs = array_merge($fontDirs, [
    $_SERVER['DOCUMENT_ROOT'] . '/webroot/font/Montserrat',
    $_SERVER['DOCUMENT_ROOT'] . '/webroot/font/Poppins',
]);

$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];
$fontData = $fontData + [
    'Montserrat' => [
        'R' => 'Montserrat-Regular.ttf'
    ],
    'Poppins' => [
        'R' => 'Poppins-Regular.ttf'
    ]
];

Configure::write('CakePdf', [
    'engine' => [
        'className' => 'CakePdf.Mpdf',
        'options' => [
            'fontDir' => $fontDirs,
            'fontdata' => $fontData,
            'default_font_size' => 20,
            'default_font' => 'Montserrat'
        ]
    ],
    'margin' => [
        'bottom' => 15,
        'left' => 50,
        'right' => 30,
        'top' => 45
    ],
    'orientation' => 'portrait',
    'download' => true
]);
<style>
    .test {
        font-family: "Montserrat"
    }
</style>
<table cellpadding="5" cellspacing="0" style="width: 100%;">
<tr>
    <td>
        <span class="test"># test123</span>
    </td>
</tr>

текст «test123» всегда имеет шрифт по умолчанию. как я могу изменить это

1 Ответ

0 голосов
/ 11 ноября 2019

Имена шрифтов массива и выбранный шрифт по умолчанию должны использоваться в нижнем регистре. В любом случае, другие ключи массива используют прописные буквы в именах, новые пользовательские шрифты должны использовать строчные буквы.

$fontData = $fontData + [
    'montserrat' => [
        'R' => 'Montserrat-Regular.ttf'
    ],
    'poppins' => [
        'R' => 'Poppins-Regular.ttf'
    ]
];

Configure::write('CakePdf', [
    'engine' => [
        'className' => 'CakePdf.Mpdf',
        'options' => [
            'fontDir' => $fontDirs,
            'fontdata' => $fontData,
            'default_font_size' => 10,
            'default_font' => 'montserrat'
        ]
    ],
    'margin' => [
        'bottom' => 15,
        'left' => 50,
        'right' => 30,
        'top' => 45
    ],
    'orientation' => 'portrait',
    'download' => true
]);
...