【问题标题】:Displaying Japanese Characters using DOMpdf使用 DOMpdf 显示日文字符
【发布时间】:2016-02-27 10:17:50
【问题描述】:

问题:

我想使用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变量中存储的相关html$template:

<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));

如果有人有任何建议或看看我是否遗漏了什么,将不胜感激!

【问题讨论】:

    标签: php utf-8 dompdf


    【解决方案1】:

    没关系,我发现了它为什么不起作用,我会在这里发布给遇到同样问题的任何人。

    问题出在这篇文章中:

    @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;},它显然将字体系列设置为浏览器默认值,DomPDF 不考虑之后的覆盖(不支持!important?)。

    将行更改为 .ft0{font-size: 14px;line-height: 16px;} 解决了我的问题。

    【讨论】:

    • “20 分钟前询问/3 分钟前回答”下一次发帖前多考虑 17 分钟(:
    • @aesede 是的.. 好吧,我已经工作了 8 个小时了。但我想发布这个问题有助于我获得一个概览。
    • 是的,很多时候把注意力放在其他事情上(甚至是 SO 语法格式)可以使需要的头脑重置。
    • 我不知道它是否有问题,可能只是一个特异性问题(即.ft0* 更具体)。但是,!important 应该覆盖特异性......并且它在我的测试中确实如此,因此可能会发生其他事情。
    • 您传递给 dompdf 的 HTML/CSS 没有在 @font-face 声明中包含反斜杠,是吗?
    猜你喜欢
    • 2018-06-16
    • 2016-12-07
    • 1970-01-01
    • 2020-11-29
    • 2020-02-12
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多