Dompdf不呈现自定义字体

时间:2018-07-27 12:13:30

标签: php yii2 dompdf

在回显时,我发送给dompdf的$ html字符串给我很好的字体。 我已经尝试过:

  • 手动将字体添加到dompdf / dompdf / lib / fonts
  • 编译.afm和.ufm文件并将其保存到dompdf / dompdf / lib / fonts
  • 使用文件下载和作曲工具卸载并重新安装dompdf
  • 下载dompdf \ utils并在cmd中运行load_fonts脚本

这是我称为dompdf的代码

$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$dompdf = new Dompdf('A4', $options);
$dompdf->loadHtml($html, 'UTF-8');
$dompdf->setPaper('A4');
$dompdf->render();
$output = $dompdf->output();

这是在$ html里面的样子,我称之为@ font-face

<?php $link = yii\helpers\Url::base(true) . '/web/css/fonts/Roboto-Bold.ttf';
?>

@font-face {
   font-family: 'Roboto';
   font-style: normal;
   font-weight: normal;
   src: url( <?php echo $link ?>) format('truetype');
}

1 个答案:

答案 0 :(得分:0)

尝试以下

首先在views中创建 view.php 文件,然后像这样添加font-face

<?php $link = \Yii::getAlias('@webroot') . '/css/fonts/Roboto-Bold.ttf'; ?>
<html>
    <head>
        <style type="text/css">
            @font-face {
                font-family:roboto;
                src:url(" <?php echo $link ?> ") format('truetype');
                font-weight:normal;
                font-style:normal;
            }
        </style>
    </head>
    <body>
        <p style="font-family:roboto">Sample Text Here</p>
    </body>
</html>

注意:检查加载字体文件的路径是否正确。

controller中使用renderPartial()加载视图文件后,像这样调用Dompdf

public function actionPrintDemo() {
    $html = $this->renderPartial('view');
    $options = new Options();
    $options->set('isHtml5ParserEnabled', true);
    $dompdf = new Dompdf('A4', $options);
    $dompdf->loadHtml($html, 'UTF-8');
    $dompdf->setPaper('A4');
    $dompdf->render();
    $output = $dompdf->output();
}