Zend framework 如何将字体与MPDF一起使用?

Zend framework 如何将字体与MPDF一起使用?,zend-framework,font-awesome,mpdf,Zend Framework,Font Awesome,Mpdf,我正在使用Zend框架并使用mpdf创建PDF 我试图使用fontawesome来表示一些文章,但是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/

我正在使用Zend框架并使用mpdf创建PDF
我试图使用fontawesome来表示一些文章,但是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();
我在html中使用的代码

<span class="company-name">&#xf21b; name of the company</span>
和#xf21b;公司名称

提前感谢。

编辑:现在,这是一种过时的方法,应该只在遗留系统上使用

我建议在最新版本中修改mPDF字体和/或如果它是由Composer安装的,则在实例化类时传递参数


简单的方法:

  • font.ttf
    文件复制到
    /mPDF/ttfonts/
    目录中

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

  • “fontawesome”=>数组(
    'R'=>“FontWoome webfont.ttf”,
    ),
    
  • 使用新字体系列正确更改文档CSS。例如:
  • $stylesheet='.公司名称{font-family:fontawesome;}';
    
  • 实例化类时,让第一个参数为空:
  • 例如:

    $mpdf=新的mpdf();
    

    $mpdf=新的mpdf(“'A4');
    
    我用mPDF 6.0进行了测试,它成功了

    此外,mPDF手册还解释了如何使用更多选项进行此操作:

    当您不想编辑mPDF中的源文件/dir时,为Font Aowesome 5.x和mPDF 7.x提供了一种更新的解决方案:

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

    $defaultConfig=(新的Mpdf\Config\ConfigVariables())->getDefaults();
    $fontDirs=$defaultConfig['fontDir'];
    $defaultFontConfig=(新的Mpdf\Config\FontVariables())->getDefaults();
    $fontData=$defaultFontConfig['fontData'];
    $mpdf=new\mpdf\mpdf([
    “fontDir”=>数组合并($fontDirs[
    __目录.'/../../resources/font',
    ]),
    “fontdata”=>$fontdata+[
    “ibmplex”=>[
    'R'=>'IBMPlexSans Regular.ttf',
    'B'=>'IBMPlexSans Bold.ttf',
    'I'=>'IBMPlexSans Italic.ttf',
    ],
    “真棒”=>[
    'R'=>'fa-solid-900.ttf'
    ],
    ],
    “默认字体”=>“ibmplex”,
    “格式”=>“A4”
    ]);
    
    然后你可以用

    ;
    

    根据--注意,f3ed是本例中的实际图标。

    实际上,如果您已使用composer安装了mPdf,请将以下行添加到位于vendor\mPdf\mPdf\src\Config\FontVariables.php中的文件中

    "fontawesome" => [ 
                        'R' => "fontawesome-webfont.ttf",
                    ],
    

    在“fontdata”部分中,我使用PHP大约5到6年了,每次我需要创建PDF时,都不能满足我的期望(CSS或其他元素)。因此,我在stackoverflow中发现了一个API,您只发送HTML,它们返回的PDF与您的页面完全相同。试试看:好主意!添加了
    $pdf->WriteHTML('.fa{font-family:fontawesome;}',1)
    这样我就可以像真的一样使用它了:
    和xf0e7作为的示例。unicode就在页面上巨大图标的正下方,必须以
    &#x
    @MartinSchilliger-good idea,working-great…作为前缀,但我添加了
    字体样式:normal
    标签以斜体显示图标!工作起来很有魅力。我只是省略了所有的
    ibmplex
    内容。我还添加了其他fontawesome ttf:
    ['fontawesome'=>['R'=>'fa-regular-400.ttf'],'fontawesome-solid'=>['R'=>'fa-solid-900.ttf'],'fontawesome brands'=>['R'=>'fa-brands-400.ttf']]
    并且在我的CSS中添加了助手类:
    .fa{{字体家族:fontawesome;}.fas{家族:fontawesome;}.fa;}.fa{font family:fontawesome brands;}
    我认为这是目前最好的解决方案。我在上面编辑了我的答案。不建议手动修改供应商文件夹中的文件。对于那些由composer安装的人来说,最好的解决方案是上面的@Arie solution。