Zend framework 如何将字体与MPDF一起使用?
我正在使用Zend框架并使用mpdf创建PDFZend 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/
我试图使用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"> name of the company</span>
和#xf21b;公司名称
提前感谢。编辑:现在,这是一种过时的方法,应该只在遗留系统上使用 我建议在最新版本中修改mPDF字体和/或如果它是由Composer安装的,则在实例化类时传递参数
简单的方法:
font.ttf
文件复制到/mPDF/ttfonts/
目录中
/mPDF/config_fonts.php
,搜索由$this->fontdata
启动的数组并添加到其中:
“fontawesome”=>数组(
'R'=>“FontWoome webfont.ttf”,
),
$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就在页面上巨大图标的正下方,必须以
@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。