在mPDF

时间:2017-09-02 21:06:51

标签: php fonts 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');

使用此代码我得到errormessage

  

mPDF错误 - 不支持字体 - dejavusanscondensed。

调用
  

mpdf / vendor / mpdf / mpdf / mpdf.php

在3809行

  

if(!isset($ this-> fontdata [$ family] [$ stylekey])||!$ this-> fontdata [$ family] [$ stylekey]){               抛出新的MpdfException(' mPDF错误 - 不支持字体 - '。$ family。''。$ style);           }

希望有人可以帮助我。

干杯

3 个答案:

答案 0 :(得分:1)

您的代码示例有些奇怪:

  • 为了能够使用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/');

  

在阅读第7版时,我可以加载自己的字体,而无需更改config_fonts.php

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

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

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

答案 1 :(得分:0)

您不希望覆盖整个fontdata数组(这就是您正在做的事情)。相反,在其末尾添加新记录。

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

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

答案 2 :(得分:0)

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

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