dompdf特殊字符显示问号?

6
我使用dompdf 0.5.1来生成PDF文件。但是特殊字符未能正确显示。
例如:Enter image description here
在生成的PDF文件中,它会显示类似于“– “”的内容。
我在由dompdf呈现的HTML页面中使用了UTF-8编码,如下所示: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在发送给dompdf之前,我还使用了编码,如下所示: $dompdf->load_html(utf8_decode($html));
但我得到了上述字符的问号标记。
我该如何解决以上问题?
1个回答

8

Dompdf 0.5.1支持有限的字符,这些字符不支持Windows ANSI编码。如果您需要支持这些字符,则应升级至至少Dompdf 0.6.2。虽然如果可以的话,建议使用Dompdf 0.7.0

您需要提供支持您的字符的字体(请参见Unicode How-To),但只要您没有尝试呈现CJK字符,您可能可以依赖于包含的DejaVu字体。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <style>
    * { font-family: DejaVu Sans, sans-serif; }
  </style>
</head>
<body>
  <p></p>
</body>
</html>

另外,您应该永远不要使用utf8_decode()函数,因为它会破坏性地转换为iso-8859-1编码。所谓破坏性是指,它将无法直接转换为iso-8859-1的字符变成问号(?)。


我将它升级到Dompdf 0.6.2版本,现在它可以正常工作了。谢谢 @BrianS。 - Kishore Patra
我已经安装了Dompdf 0.8.2,最初它会将ʼn(相当于英语中的a)输出为 ?。当然,我忘记了laravel的{{ }}转义字符,所以我改成了 {!! !!},这解决了一些ʼn字符的问题。我复制了一份文本从我收到的PDF文件插入到了一个站点上,该PDF文件具有ʼn字符的编码,无法转换。当然,解决方案是将ʼn字符变成两个字符,即一个撇号和字母n,即'n - Hmerman6006

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