我知道这个问题不是第一次被问到,但所有其他线程都没有帮助我让它发挥作用。 我想在我的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); }
希望有人可以帮助我。
干杯
答案 0 :(得分:1)
您的代码示例有些奇怪:
fontDir
属性,您必须使用mPDF 7.x new \mPDF
表明6.x - 7.x具有命名空间签名new \Mpdf\Mpdf()
_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",
),
)