使用dompdf不显示中文文本

Chinese text not show using dompdf

提问人:namarahasia 提问时间:10/20/2023 最后编辑:namarahasia 更新时间:10/20/2023 访问量:99

问:

您好,我想使用 dompdf 将 html 转换为 pdf,我的 HTML 有中文文本。在HTML视图中,中文文本显示得很好,但是当我转换为pdf时,中文文本仅显示正方形。

这是我的代码

$html = $this->load->view('view_view', $data, TRUE);
//echo $html;

require("assets/dompdf1/autoload.inc.php"); 
define("DOMPDF_UNICODE_ENABLED", true);
$options = new Options();
$options->set('defaultFont', 'DejaVu Sans');
$dompdf = new Dompdf($options);
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
$dompdf->loadHtml($html);


// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');

// Render the HTML as PDF
$dompdf->render();

        // Output the generated PDF to Browser

$dompdf->stream("View.pdf", array("Attachment" => false));


exit(0);

错误

我已经在 HTML 中设置了字体

   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style>
    @page {
        margin-top: 0.3cm;
        margin-bottom: 0cm;
    }
    @font-face {
        font-family: 'NotoSansCJK';
        src: url('assets/dompdf1/lib/fonts/NotoSansCJKtc-Regular.ttf') format('truetype');
    }
     body {
       font-family: 'NotoSansCJK', DejaVu Sans, sans-serif;
    }
    </style>

有人可以帮我吗,我已经在任何地方搜索,但仍然找不到解决方案

我使用 dompdf 版本 0.8.0

编辑:我通过添加行来遵循 chams

$options = new Options();
$options->set('defaultFont', 'DejaVu Sans');
$dompdf = new Dompdf($options);

而且方块不见了,不知道怎么了 更新

编辑:我只是更新了字体,我使用的是 kai 粗体字体,正方形返回错误

编辑:我只是再次更新字体,我正在使用NotoSansCJKtc-Regular,并且仍然得到了正方形。

编辑:我遵循这个 https://github.com/dompdf/dompdf/issues/2773,现在工作正常

字体文件夹

php html codeigniter-3 dompdf cjk

评论


答:

0赞 Chams Agouni 10/20/2023 #1

确保字体支持Dompdf默认不支持的中文字符。

编辑:

require 'vendor/autoload.php';
define('DOMPDF_FONT_DIR', __DIR__ . 'path-to-fonts-dir');

$options = new Options();
$options->set('isPhpEnabled', true); // Enable PHP evaluation
$options->set('fontDir', DOMPDF_FONT_DIR);
$dompdf = new Dompdf($options);

$html = $this->load->view('view_view', $data, TRUE);
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');

$options->set('defaultFont', 'NotoSansCJKtc-Regular');

$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream("View.pdf", array("Attachment" => false));

exit(0);

评论

0赞 namarahasia 10/20/2023
是的,我已经使用了支持汉字的字体,我只是编辑了我的问题。
0赞 Chams Agouni 10/20/2023
请检查 github.com/dompdf/dompdf#about-fonts--character-encoding
0赞 namarahasia 10/20/2023
我已经按照指南操作了,但仍然有同样的问题,我不知道为什么
0赞 namarahasia 10/20/2023
看题目,我只是编辑了一下,不知道出了什么问题
0赞 Chams Agouni 10/20/2023
我检查了您的编辑,现在我们确认这是一个字体问题,请尝试使用 NotoSansCJKtc-Regular