为什么 laravel-dompdf 不加载粗体的 font-face?

Why doesn't laravel-dompdf load font-face for bold?

提问人:nanii 提问时间:10/25/2023 最后编辑:nanii 更新时间:11/6/2023 访问量:84

问:

我在我的系统上使用laravel-dompdf来输出pdf。

我最近更新了 php 和 laravel。

但是,有些 pdf 是乱码。

字体在 css 中由 font-face 定义。

字体在 public/assets/pdf.css 中定义。

用 <th> 括起来的字符是乱码。

字体粗细为“粗体”的字符也会出现乱码。

为什么会这样?

public/assets/pdf.css 中定义的 .a 类。被反映出来。

在更新之前,它在 php7.4.33 和 laravel6.20.44 中没有乱码。

我从一位朋友那里听说,在 utf-8 中支持粗体需要两个字体定义,所以我定义了两个字体定义,但它们没有被反映出来。

public/assets/pdf.css 中定义的 .a 类。被反映出来。

公共/资产/pdf.css

.a {
  font-size: 80px;
}
html {
    font-size: 10px;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@font-face {
    font-family: mcs;
    src: url('../fonts/mcs.TTF');
}

@font-face {
  font-family: mcs;
  font-weight: bold;
  font-style: bold;
  src: url('../fonts/mcs.TTF');
}

body {
    font-family: ipag;
    font-weight: normal !important;
}

resources/views/pdf.blade.php

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link href="{{ public_path('/assets/pdf.css') }}" rel="stylesheet" type="text/css" media="all">
    <style>
    </style>
</head>
<body>
    <table>
        <tr>
            <th>カタカナ</th>
            <td>カタカナ</td>
        </tr>
        <tr>
            <th>漢字</th>
            <td>漢字</td>
        </tr>
        <tr>
            <th>ひらがな</th>
            <td>ひらがな</td>
        </tr>
    </table>
    <p class="a">あいうえお</p>
    <p style="font-weight: bold">あいうえお<p>
</body>
</html>

控制器中的功能

$export = $this->pdf->loadView('pdf');
return $export->download('test.pdf');

TTF 文件在 public/fonts/mcs 中不存在问题。TTF的。

sh-4.2# php -v

PHP 8.1.23 (cli) (built: Sep 15 2023 21:56:29) (NTS)

sh-4.2# php 工匠 --version

Laravel Framework 9.52.16

我已经安装了mbstring扩展。

yum install php-mbstring

输出pdfOutput pdf

PHP 拉维尔 PDF 拉拉维尔刀片 php-8.1

评论

0赞 rizqyhi 10/25/2023
您使用 on ,但使用 name 注册字体。font-family: ipag;bodymcs
0赞 nanii 10/27/2023
@rizqyhi 感谢您的评论。删除正文 ipag 不起作用。
0赞 nanii 10/27/2023
@KJ 非常感谢。我看到通过设置两个字体设置,它反映在普通字体和粗体字体中。但是,它没有反映出来。
0赞 nanii 11/2/2023
TO:我不知道你在运行什么系统,不知道他们使用什么字体,但是如果我...对不起,我刚刚看到电子邮件并注意到您的评论。
0赞 nanii 11/7/2023
我分享最终结果:将 barryvdh/laravel-dompdf 更新到 2.0.0 导致 <th> 和粗体字符乱码。1.0.2 未导致乱码。

答:

0赞 nanii 11/6/2023 #1

我将 barryvdh/laravel-dompdf 更新到 1.0.0,稍后它有所改进。目前尚不清楚它为什么会有所改善。