dompdf 字符编码 UTF-8
我正在尝试使用正确的字符创建 pdf,但是有?"字符.我创建了一个测试 php 文件,我试图在其中找到最佳解决方案.如果我在浏览器中打开 html,我看起来没问题
Im trying to create pdf with correct characters, but there are "?" chars. I created a test php file, where Im trying to fing the best solution. If Im open in the browser the html I looks like ok
UTF-8 --> UTF-8 : X Ponuka číslo € černý Češký
但是当我查看pdf时,我看到了这个
But when I look into the pdf I see this
UTF-8 --> UTF-8 : X Ponuka ?íslo € ?erný ?ešký
这是我的所有代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>č s š Š</title>
</head>
<body>
<?php
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 = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style></style><title>č s š Š</title></head><body>';
foreach ($tab as $i)
{
foreach ($tab as $j)
{
$chain .= "<br> $i --> $j : ".iconv($i, $j, 'X Ponuka číslo € černý Češký <br>');
}
}
$chain .= '<p style="font-family: firefly, verdana, sans-serif;">??????X Ponuka číslo € černý Češký <br></p></body></html>';
echo $chain;
echo 'X Ponuka číslo € černý Češký <br>';
$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());
?>
</body>
</html>
我做错了什么?我尝试了很多我发现的选项:(知道吗?
What Im doing wrong? I tried many many options which I found :( Any idea?
推荐答案
您应该阅读Unicode How-to再次.主要问题是您没有指定支持您的字符的字体.看起来您已经阅读了操作方法,因为您使用的是该文档中的字体示例.然而,这个例子并不意味着全局适用于任何文档,dompdf 默认不包含 firefly(一种汉字字体)或 Verdana.
You should read over the Unicode How-to again. The main problem is that you don't specify a font that supports your characters. It looks like you've read the how-to, because you're using the font example from that document. However the example was not meant to apply globally to any document, dompdf doesn't include firefly (a Chinese character font) or Verdana by default.
如果您不指定字体,则 dompdf 会退回到仅支持 Windows ANSI 编码的核心字体之一(Helvetica、Times Roman、Courier).因此,请务必使用支持 Unicode 编码并具有您需要显示的字符的字体来设置文本样式.
If you do not specify a font then dompdf falls back to one of the core fonts (Helvetica, Times Roman, Courier) which only support Windows ANSI encoding. So always be sure to style your text with a font that supports Unicode encoding and has the characters you need to display.
在 dompdf 0.6.0 中,您可以使用包含的 Deja Vu 字体.所以以下应该工作(只是 HTML):
With dompdf 0.6.0 you can use the included Deja Vu fonts. So the following should work (just the HTML):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
body { font-family: DejaVu Sans, sans-serif; }
</style>
<title>č s š Š</title>
</head>
<body>
<p>??????X Ponuka číslo € černý Češký <br></p>
</body>
</html>
相关文章