当前位置: 首页 > 工具软件 > dompdf > 使用案例 >

dompdf php乱码,php – dompdf字符编码UTF-8

齐昊苍
2023-12-01

我试图用正确的字符创建pdf,但有“?”字符.

我创建了一个测试php文件,我试图找到最好的解决方案.如果我在浏览器中打开html我看起来没问题

UTF-8 --> UTF-8 : X Ponuka číslo € černý Češký

但是当我查看pdf时,我看到了这一点

UTF-8 --> UTF-8 : X Ponuka ?íslo € ?erný ?ešký

这是我的所有代码:

č s š Š

require_once("dompdf/dompdf_config.inc.php");

$tab = array("UTF-8", "ASCII", "Windows-1250", "ISO-8859-2", "ISO-8859-1", "ISO-8859-6", "CP1256");

$chain = '

č s š Š';

foreach ($tab as $i)

{

foreach ($tab as $j)

{

$chain .= "
$i --> $j : ".iconv($i, $j, 'X Ponuka číslo € černý Češký
');

}

}

$chain .= '

??????X Ponuka číslo € černý Češký

';

echo $chain;

echo 'X Ponuka číslo € černý Češký
';

$filename = 'pdf/_1.pdf';

$dompdf = new DOMPDF();

$dompdf->load_html($chain, 'UTF-8');

$dompdf->set_paper('a4', 'portrait'); // change these if you need to

$dompdf->render();

file_put_contents($filename, $dompdf->output());

?>

我做错了什么?我尝试了很多选项,我发现:(有什么想法吗?

解决方法:

你应该再读一遍Unicode How-to.主要问题是您没有指定支持您的字符的字体.看起来你已经阅读了该方法,因为你正在使用该文档中的字体示例.但是,该示例并不意味着全局应用于任何文档,dompdf默认情况下不包括firefly(中文字符字体)或Verdana.

如果您没有指定字体,那么dompdf会回退到仅支持Windows ANSI编码的核心字体之一(Helvetica,Times Roman,Courier).因此,请始终确保使用支持Unicode编码的字体设置文本样式,并显示需要显示的字符.

使用dompdf 0.6.0,您可以使用随附的Deja Vu字体.所以以下应该工作(只是HTML):

body { font-family: DejaVu Sans, sans-serif; }

č s š Š

??????X Ponuka číslo € černý Češký

标签:php,character-encoding,utf-8,dompdf

来源: https://codeday.me/bug/20190926/1819133.html

 类似资料: