dompdf如何处理特殊字符

5

我有以下代码:

$pdf = \App::make('dompdf');
$pdf->loadView('offers.pdf',compact('email','messages'));
return $pdf->stream();

pdf.blade.php:

<!doctype html>
<html class="no-js" lang="sk">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
        * {
            font-family: "Arial";
        }
    </style>
</head>
<body>
Rozpočet, Voliteľné časti
</body>
</html>

PDF文档长这样:

Rozpo?et,Volite?né ?asti

但我需要像 pdf.blade.php 文件中那样显示特殊字符,你有什么解决方案吗?


可能是dompdf特殊字符的重复问题。 - BrianS
默认情况下,您只能访问核心PDF字体(仅支持Windows ANSI编码)和DejaVu字体(用于在dompdf 0.6.0或更高版本中支持Unicode)。任何其他字体都必须加载到dompdf中或通过CSS引用。我在这里的答案可能会有所帮助:https://dev59.com/CWAf5IYBdhLWcg3wqELp#24517882 - BrianS
2个回答

0
这对我有用:
<html>

<head>
  <meta http-equiv="Content-Type" content="charset=utf-8" />
  <style type="text/css">
    * {
      font-family: "DejaVu Sans Mono", monospace;
    }
  </style>
</head>

<body>your content ćčžšđ...</body>

</html>

0
对于 Laravel 8,我通过 https://github.com/mpdf/mpdf PHP 包的帮助解决了我的问题。
首先,我在资源文件夹中创建了一个视图模板 "pdfview.blade.php"。
<!DOCTYPE HTML>
<html lang="fa">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
    <table dir="rtl">
        <tr>
            <th>ردیف</th>
            <th>عنوان</th>
            <th>توضیحات</th>
        </tr>
        @foreach ($items as $key => $item)
            <tr style="padding: 5px">
                <td style="padding: 10px">{{ ++$key }}</td>
                <td style="background: #efefef; padding: 10px">{{ $item->title }}</td>
                <td style="padding: 10px">{{ $item->body }}</td>
            </tr>
        @endforeach
    </table>
</body>

并在我的控制器中创建了一个方法:

public function pdfview()
{
    $items = Post::get();
    // change the root directory of fonts.
    $fontDirs = public_path() . "/fonts/MY_FONT_NAME/";
    // specify the font
    $fontData = [
        "MY_FONT_NAME" => [
            'R' => 'MY_FONT_NAME.ttf'
         ],
    ];
    $mpdf = new Mpdf([
        'fontDir' => $fontDirs,
        'fontdata' => $fontData,
        'default_font' => 'MY_FONT_NAME'
    ]);
    // render view as HTML
    $html = view('pdfview', compact('items'))->render();
    $mpdf->WriteHTML($html);
    return $mpdf->Output();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接