我正在使用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'
的事件,我得到了相同的错误。
答案 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,但可能会导致其他问题-我没有没有测试过。