如何在 MPDF 中使用 Font Awesome?

How to use Font Awesome with MPDF?

我正在使用 Zend Framework 并使用 mpdf 创建 PDF。
我正在尝试使用 fontawesome 来表示一些文章,但是 font awesome 的字体没有正确呈现 下面是代码。

$stylesheet =  file_get_contents("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css");
$stylesheet .= file_get_contents("https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css");

$this->mpdf->WriteHTML($stylesheet,1);
$this->mpdf->WriteHTML($html,2);
$this->mpdf->allow_charset_conversion = true; 
$this->mpdf->charset_in = 'windows-1252';
$this->mpdf->Output();

我在 html

中使用的代码
<span class="company-name">&#xf21b; name of the company</span>

提前致谢。

编辑:如今,这是一种过时的方法,只能在遗留系统上使用。

我推荐,修改其最新版本的mPDF字体and/or,如果它是由Composer安装的,在实例化时传递参数class。


简单的方法:

  1. fontawesome-webfont.ttf 文件复制到 /mPDF/ttfonts/ 目录。

  2. 编辑/mPDF/config_fonts.php,搜索$this->fontdata开始的数组并添加:

"fontawesome" => array(
    'R' => "fontawesome-webfont.ttf",
),
  1. 使用新字体系列正确更改文档 CSS。例如:
$stylesheet = '.company-name { font-family: fontawesome; }';
  1. 实例化class时,让第一个参数为空:

例如:

$mpdf = new mPDF();

$mpdf = new mPDF('', 'A4');

我使用 mPDF 6.0 进行了测试,它运行良好。

此外,mPDF 手册解释了如何使用更多选项进行操作: Fonts in mPDF 6.x

Font Awesome 5.x 和 mPDF 7.x 的最新解决方案,当您不想从 mPDF 编辑源 files/dirs 时:https://mpdf.github.io/fonts-languages/fonts-in-mpdf-7-x.html

我的用例,这提供了 mPDF 提供的字体、fontawesome 和另一种自定义字体(在本例中为 ibmplex)的使用。请注意,当提供 'ibmplex' 和 'fontawesome' 等字体名称时,它们是小写的。为避免混淆字体为何不起作用,我建议使用小写字母且名称不要有空格。

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];

$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];

$mpdf = new \Mpdf\Mpdf([
    'fontDir' => array_merge($fontDirs, [
        __DIR__ . '/../../resources/fonts',
    ]),
    'fontdata' => $fontData + [
        'ibmplex' => [
            'R' => 'IBMPlexSans-Regular.ttf',
            'B' => 'IBMPlexSans-Bold.ttf',
            'I' => 'IBMPlexSans-Italic.ttf',
        ],
        'fontawesome' => [
            'R' => 'fa-solid-900.ttf'
        ],
    ],
    'default_font' => 'ibmplex',
    'format' => 'A4'
]);

然后你可以使用

<span style="font-family: fontawesome;">&#xf3ed;</span>

根据 https://fontawesome.com/cheatsheet -- 请注意 f3ed 是这种情况下的实际图标。

实际上,如果您安装了 mPdf with composer,请将以下行添加到位于 vendor\mpdf\mpdf\src\Config\FontVariables.php

的文件中
"fontawesome" => [ 
                    'R' => "fontawesome-webfont.ttf",
                ],

在 'fontdata' 部分内