如何使用 Dompdf 修复生成的 pdf 的编码

问题描述 投票:0回答:1

我正在使用 Laravel 9 和 Dompdf 生成一些 pdf 文件。

我调用 pdf 文件的刀片包含波斯语/波斯语/阿拉伯语字符语言,因此最终结果将显示为 ?????????.

那么如何正确生成utf-8格式的pdf文件呢?

public function convertToPdf(Request $request, Order $order)
    {       
        $dompdf = new Dompdf();
        $dompdf->loadHtml(view('admin.shop.orders.order_details_pdf'));
        
        $dompdf->setPaper('A4','landscape');
        
        $dompdf->render();
        
        $dompdf->stream('demo.pdf',['Attachment' => false]);
    }

我真的很感激你们的任何想法或建议......

谢谢

php laravel dompdf laravel-5.8 laravel-dompdf
1个回答
0
投票

要让 DomPdf 显示非英语语言,需要满足以下条件:

  • 将 html 字符集设置为
    utf8
  • 使用支持相关语言的字体

以下是如何操作的示例:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:[email protected]&family=Noto+Sans+JP:[email protected]&family=Noto+Sans+KR:[email protected]&family=Noto+Sans+SC:[email protected]&family=Noto+Sans:[email protected]&display=swap" rel="stylesheet">
<style>

body {
    font-family: 'Noto Sans', 'Noto Sans JP', 'Noto Sans SC', 'Noto Sans KR', 'Noto Sans Arabic', 'Tangerine', sans-serif;
}

</style>
</head>
<body>
    Thank you for shopping with us!<br>
    Merci d'avoir fait vos achats chez nous!<br>
    Vielen Dank für Ihren Einkauf!<br>
    Спасибо что покупаете у нас!<br>
    Ευχαριστούμε που αγοράσατε από εμάς!<br>
    ご利用いただきありがとうございます!<br>
    感謝您與我們購物!<br>
    우리 가게를 찾아주셔서 감사합니다!<br>
    را لتسوقك معنا!<br>
</body>
</html>

样本取自https://github.com/8ctopus/pigeon-invoice

© www.soinside.com 2019 - 2024. All rights reserved.