Shopware:使用默认字体生成PDF会引发“找不到TTF TrueType字体文件“ DejaVuSansMono.ttf””

时间:2019-01-21 11:58:15

标签: mpdf shopware

我正在使用Mpdf v7生成PDF文件。这是我的配置:

$mpdfConfig =
        [
            'margin_left' => 25,
            'margin_right' => 10,
            'margin_top' => 20,
            'margin_bottom' => 20,
            'format' => 'A4-L',
            'mode' => 'win-1252',
        ];

调用输出以保存我的pdf会引发以下错误:

  

在配置的字体目录中找不到TTF TrueType字体文件“ DejaVuSansMono.ttf”。在第33行的/var/www/html/vendor/mpdf/mpdf/src/Fonts/FontFileFinder.php中

我正在使用Shopware 5.5.1,并使用随附的mpdf库。使用以下代码调用pdf:

$mpdf = new Mpdf($mpdfConfig);
$mpdf->WriteHTML($data);
$mpdf->Output($filename, "D");

为什么找不到DejaVuSansMono.ttf字体?我不使用这种字体。将'default_font'定义为'Courier'的事件,我得到了相同的错误。

1 个答案:

答案 0 :(得分:1)

所分发的Shopware带有mPDF的修改版本,并且剥去了字体文件(这是违反其许可的行为)。

您有两个或三个选项:

通过以下方式实例化mPDF

$mpdf = new \Mpdf\Mpdf([
    'mode' => 'c'
]);

配置参数,将仅使用内部PDF字体


或下载或克隆mPDF(from GitHub),将ttfonts目录移至您的项目,然后将该文件夹添加到mPDF配置中:

$mpdf = new \Mpdf\Mpdf([
    'fontDir' => __DIR__ . '/ttfonts', // or similar
]);

或者您可以在Shopware安装中删除vendor目录,然后通过运行composer install重新创建它-应该重新创建带有供应商目录中所有字体的整个mPDF installatino,但可能会导致其他问题-我没有没有测试过。