我想使用包含日文文本的DomPDF生成pdf。为了做到这一点,我知道我需要一个支持日文字符的字体并将字体加载到DomPDF中
我已经阅读了DomPDF的UnicodeHowTo以及关于SO的几个类似的问题,但我似乎无法让它发挥作用。我在日文字符所在的地方得到?
。
在我的dompdf配置中,我设置了def("DOMPDF_UNICODE_ENABLED", true);
,它在管理界面中也显示为true。我使用的字体(我试过几个)应该支持日文字符,并使用load_font.php
脚本加载到DomPDF中。为了完整起见,我必须注意,生成字体文件会给出2个相同的警告
警告:strftime():依赖系统的时区是不安全的 设置。您必需使用date.timezone设置或 date_default_timezone_set()函数。如果您使用其中任何一个 方法,你最有可能仍然得到这个警告 拼写错误的时区标识符。我们选择了时区' UTC'对于 现在,但请设置date.timezone以选择您的时区。在.. ..
存储在PHP变量$template
中的相关html:
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<META http-equiv="X-UA-Compatible" content="IE=8">
<TITLE>Test voucher</TITLE>
<STYLE type="text/css">
@font-face {
font-family: \'mgenplus\';
font-style: normal;
font-weight: 400;
src: url(dompdf/fonts/rounded-mgenplus-1c-regular.ttf) format(\'truetype\');
}
.ft0{font: 14px;line-height: 16px;}
*{ font-family: mgenplus !important;}
</STYLE>
</HEAD>
<BODY>
<P>ねん だい かい にほんごのうりょくしけん</P>
<!-- .... -->
相关PHP:
require_once("dompdf/dompdf_config.inc.php");
$template = mb_convert_encoding($template, 'HTML-ENTITIES', 'UTF-8');
$dompdf = new DOMPDF();
$dompdf->load_html($template, 'UTF-8');
$dompdf->render();
$dompdf->stream("test.pdf",array('Attachment'=>0));
如果有人有任何建议或者看我错过了什么,我们将不胜感激!
答案 0 :(得分:2)
没关系,我发现为什么它不起作用,我会在这里发布给任何面临同样问题的人。
问题在于这篇文章:
@font-face {
font-family: \'mgenplus\';
font-style: normal;
font-weight: 400;
src: url(dompdf/fonts/rounded-mgenplus-1c-regular.ttf) format(\'truetype\');
}
.ft0{font: 14px;line-height: 16px;}
*{ font-family: mgenplus !important;}
我必须删除@font-face
块,因为您从DomPDF加载字体而不是从文件加载字体,所以不需要它。导致所有麻烦的行是.ft0{font: 14px;line-height: 16px;}
它显然将font-family设置为浏览器默认值,然后DomPDF不考虑后面的覆盖(不支持!important
?)。
将行更改为.ft0{font-size: 14px;line-height: 16px;}
修复了我的问题。