我正在使用DOMPDF库以PDF格式创建发票。本文档可以是法语,俄语或英语,但我在打印俄语字符时遇到问题。
首先,我尝试使用UTF-8编码并将meta
标记放在要转换的HTML页面的头部:
< meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”/>
但那没用。
然后我在meta
标记内插入了此BODY
标记,这有助于解决法语字符问题。
但是俄罗斯人物仍然不起作用。我也尝试将俄语字符转换为HTML实体,但这也不起作用。
我使用R& OS CPDF类,而不是PDFLib作为后端。
有人可以帮忙吗?
答案 0 :(得分:8)
在接受的答案链接中断,它包含旧版本的DOMPDF。
要在DOMPDF 0.6中使用unicode符号,您有两种选择:使用现有字体或创建自己的字体。
使用现有字体(适用于DOMPDF 0.6):
/dompdf/lib/fonts/
中提取的文件。dompdf_font_family_cache.dist.php
。font-family: times;
。摘录1:
/* ... */
'times' => array (
'normal' => DOMPDF_FONT_DIR . 'times',
'bold' => DOMPDF_FONT_DIR . 'timesbd',
'italic' => DOMPDF_FONT_DIR . 'timesi',
'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
'times-roman' => array (
'normal' => DOMPDF_FONT_DIR . 'times',
'bold' => DOMPDF_FONT_DIR . 'timesbd',
'italic' => DOMPDF_FONT_DIR . 'timesi',
'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
/* ... */
如果您想使用自己的TTF字体(例如Arial.ttf
):
ttf2afm -o Arial.afm Arial.ttf
。 (我在Ubuntu中做过。)ttf2ufm -a -F Arial.ttf
。 (我在Windows中使用来自UFPDF的exe做了,但我想你可以使用/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe
。)Arial.*
。{/ li>中的/dompdf/lib/fonts/
个文件
dompdf_font_family_cache.dist.php
代码段2。font-family: arial;
。摘录2:
/* ... */
'arial' => array (
'normal' => DOMPDF_FONT_DIR . 'Arial',
'bold' => DOMPDF_FONT_DIR . 'Arial',
'italic' => DOMPDF_FONT_DIR . 'Arial',
'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */
答案 1 :(得分:7)
问题在于字体默认的dompdf使用(也就是说它没有所有的unicode字符,现在已超过5000)。通常arialuni.ttf就是你所需要的。您可以在http://chernev.ru/dompdf.rar {已断开链接}
下载本地化的俄语版本更新了链接:https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf
答案 2 :(得分:5)
如果你使用DejaVu字体,你可以看到西里尔字符
DejaVu TrueType字体已预先安装,默认情况下为dompdf提供了良好的Unicode字符覆盖率。要使用DejaVu字体,请参考样式表中的字体,例如body {font-family:DejaVu Sans; (对于DejaVu Sans)。
DOMPDF包括DejaVu字体默认
$html = "<html><head><style>body { font-family: DejaVu Sans }</style>".
"<body>А вот и кириллица</body>".
"</head></html>";
$dompdf = new \DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
echo file_put_contents('cyrillic.pdf', $dompdf->output());
您还可以在 dompdf_config.inc.php
中默认设置字体更改 defdef("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
答案 3 :(得分:0)
下载arialuni.ttf 在dompdf目录中运行php load_font.php'Arial'arialuni.ttf,将字体设置为arial 它有效;)
答案 4 :(得分:0)
对我而言,上述4个步骤并未解决问题。 除此之外,dompdf将创建的pdf转换为ANSI(ISO) 您需要在选项页面上禁用此功能 http://domain.com/admin/settings/print/pdf
勾选复选框使用dompdf的Unicode模式。这将强制以UTF-8 / Unicode创建文件。
请注意,默认情况下,网页设置会覆盖dompdf_config.inc.php中的设置。
答案 5 :(得分:0)
注意到问题可能在css-reset使用中,特别是
font:inherit;
答案 6 :(得分:0)
在您的html中,使用以下样式:
<style type="text/css">
* {
/*font-family: Helvetica, sans-serif;*/
font-family: "DejaVu Sans", sans-serif;
}
</style>