如何在MPDF中使用Font Awesome?

Meg*_*Fox 4 zend-framework mpdf font-awesome

我正在使用Zend Framework并使用mpdf创建PDF.
我试图使用fontawesome来表示一些文章,但字体真棒的字体下面没有正确呈现代码.

$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();
Run Code Online (Sandbox Code Playgroud)

我在html中使用的代码

<span class="company-name">&#xf21b; name of the company</span>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Lor*_*con 11

简单的方法:

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

2)编辑/mPDF/config_fonts.php,搜索启动的数组$this->fontdata并添加到其中:

"fontawesome" => array(
    'R' => "fontawesome-webfont.ttf",
),
Run Code Online (Sandbox Code Playgroud)

3)使用新的字体系列正确更改文档CSS.例如.:

$stylesheet = '.company-name { font-family: fontawesome; }';
Run Code Online (Sandbox Code Playgroud)

4)实例化类时,将第一个参数设为空白:

例如.:

$mpdf = new mPDF();
Run Code Online (Sandbox Code Playgroud)

要么

$mpdf = new mPDF('', 'A4');
Run Code Online (Sandbox Code Playgroud)

我用mPDF 6.0进行了测试,但它确实有效.

此外,mPDF手册解释了如何使用更多选项: mPDF 6.x中的字体

  • 好主意!添加了``$ pdf-> WriteHTML('.fa {font-family:fontawesome;}',1);``所以我可以像真实一样使用它:``<i class ="fa">&#xf0e7; </i>``作为[flash]的例子(http://fontawesome.io/icon/bolt/).unicode位于页面上的巨型图标下方,必须以"&#x"为前缀. (2认同)

Ari*_*rie 7

当您不想编辑 mPDF 中的源文件/目录时,Font Awesome 5.x 和 mPDF 7.x 的最新解决方案: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'
]);
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

<span style="font-family: fontawesome;">&#xf3ed;</span>
Run Code Online (Sandbox Code Playgroud)

根据https://fontawesome.com/cheatsheet - 请注意,在本例中f3ed是实际图标。