【问题标题】:Mpdf cannot use Custom Fonts in CakePHPMpdf 不能在 CakePHP 中使用自定义字体
【发布时间】:2019-11-12 04:08:44
【问题描述】:

我想在我的 cakephp 应用程序中为我的 pdf 文档实现两种自定义字体。我使用文档,但默认字体总是绘制。

我试图在 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”始终使用默认字体。我该如何改变这个

【问题讨论】:

  • 确保您已启用错误报告并仔细检查字体的完整路径是否符合您的预期。在添加 2 个字体目录后执行 var_dump($fontDirs); 并查看其中包含的内容。
  • 报告哪个错误?我调试了两个变量 $fontDirs 和 $fontdata 并且变量和路径是正确的
  • ini_set('display_errors','1');ini_set('display_startup_errors','1');error_reporting(E_ALL);
  • 这是 cakephp 的默认设置。它的激活
  • 尝试使用小写的自定义字体名称。

标签: php cakephp mpdf


【解决方案1】:

数组的字体名称和选择的默认字体必须使用小写。无论如何,其他数组键在名称中使用大写,新的自定义字体必须使用小写。

$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
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 2019-03-13
    • 1970-01-01
    • 2018-10-27
    • 2021-03-03
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多