在 mPDF 中加载自己的字体的问题

Problems to load own font in mPDF

我知道这个问题不是第一次被问到,但所有其他线程都没有帮助我让它工作。 我试图在我的 mPDF 调用中使用我自己的字体。 在阅读版本 7 时,我可以在不更改 config_fonts.php 的情况下加载自己的字体。这是我的尝试:

$mpdf = new \mPDF('utf-8','A4','');

$mpdf->fontDir = './assets/fonts/';
$mpdf->fontdata = array(
    "qanela" => array(
        'R' => "QanelasSoft-Regular.ttf",
        'B' => "QanelasSoft-Bold.ttf",
    ),
);

$mpdf->SetFont('qanela');

使用此代码我得到了错误消息

mPDF Error - Font is not supported - dejavusanscondensed.

它是从

调用的

mpdf/vendor/mpdf/mpdf/mpdf.php

3809 行

if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) { throw new MpdfException('mPDF Error - Font is not supported - ' . $family . ' ' . $style); }

希望有人能帮助我。

干杯

您的代码示例有些奇怪:

  • 要能够使用 fontDir 属性,您必须使用 mPDF 7.x
  • 您创建的 mpdf 实例 new \mPDF 表明 6.x - 7.x 具有命名空间签名 new \Mpdf\Mpdf()
  • 在6.x中你可以通过设置_MPDF_SYSTEM_TTFONTS常数来设置你自己的字体目录:

define('_MPDF_SYSTEM_TTFONTS', './assets/fonts/');


In read that version 7 I can load my own font without changing the config_fonts.php

v 7 中没有 config_fonts.php 文件。所有配置更改都可以在构造函数 $config 参数中完成,或者在创建对象后更改 mPDF 实例的 fontdata 属性 - 正如你正在尝试做的那样。见下文。


此外,尝试将您的字体设置附加到 fontData 属性 而不是覆盖其内容:

$mpdf->fontdata['qanela'] = 
    array(
        'R' => "QanelasSoft-Regular.ttf",
        'B' => "QanelasSoft-Bold.ttf",
    );

您不想覆盖整个 fontdata 数组(这正是您正在做的)。相反,将您的新记录添加到它的末尾。

$mpdf->fontdata['qanelasSof'] = array(
    'R' => "QanelasSoft-Regular.ttf",
    'B' => "QanelasSoft-Bold.ttf",
); 

然后确保您的 TTF 字体文件存储在 ttfonts 目录中。

mPDF 7.x 不支持大写字体。在这种情况下,您必须将您的字体名称重命名为小写

$mpdf->fontdata = array(
    "qanela" => array(
        'R' => "qanelassoftregular.ttf",
        'B' => "qanelassoftbold.ttf",
    ),
)