【发布时间】:2010-11-02 16:12:11
【问题描述】:
标签: php pdf pdf-generation dompdf
标签: php pdf pdf-generation dompdf
如果你使用 DejaVu 字体,你可以看到西里尔字符
DejaVu TrueType 字体已预先安装,默认情况下为 dompdf 提供体面的 Unicode 字符覆盖。要使用 DejaVu 字体,请参考样式表中的字体,例如正文 {字体系列: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");
【讨论】:
接受的答案链接已损坏,其中包含旧版本的 DOMPDF。
要在 DOMPDF 0.6 中使用 unicode 符号,您有两种选择:使用现有字体或创建自己的字体。
/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'
),
/* ... */
Arial.ttf):ttf2afm -o Arial.afm Arial.ttf。 (我是在 Ubuntu 中完成的。)ttf2ufm -a -F Arial.ttf。 (我在 Windows 中使用来自 UFPDF 的 exe 完成此操作,但我想您可以使用 /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe。)Arial.*文件复制到/dompdf/lib/fonts/。dompdf_font_family_cache.dist.phpsn-p 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'
)
/* ... */
【讨论】:
问题在于默认 dompdf 使用的字体(即它没有所有 unicode 字符,现在已经超过 5000 个)。通常 arialuni.ttf 是你需要的。您可以在http://chernev.ru/dompdf.rar {broken link}
下载本地化的俄语版本更新链接:https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf
【讨论】:
下载 arialuni.ttf 在 dompdf 目录下运行 php load_font.php 'Arial' arialuni.ttf,设置字体为 arial 它有效;)
【讨论】:
对我来说,上述 4 个步骤并没有解决问题。 除此之外,dompdf 将创建的 pdf 转换为 ANSI (ISO) 您需要在选项页面上禁用此功能 http://domain.com/admin/settings/print/pdf
勾选使用 dompdf 的 Unicode 模式复选框。这将强制以 UTF-8/Unicode 创建文件。
请注意,web 设置默认会覆盖 dompdf_config.inc.php 中的设置。
【讨论】:
注意到问题可能出在 css-reset 的使用上,尤其是
font:inherit;
【讨论】:
在您的 html 中,使用这种样式:
<style type="text/css">
* {
/*font-family: Helvetica, sans-serif;*/
font-family: "DejaVu Sans", sans-serif;
}
</style>
【讨论】: