dompdf特殊字符转换为问号

时间:2013-04-19 04:44:24

标签: php pdf character-encoding special-characters dompdf

我在html下面用dompdf解析并生成一个pdf文件: -

    <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
    td {
        margin-left: 15px;
        padding-left: 15px;
        border: none;
    }

    table {
        border: none;
    }
    </style>


    <style type="text/css">
    @font-face {
        font-family: "nmsyms";
        src: url("customfonts/nmsyms.eot");
    }

    @font-face {
        font-family: nmsyms;
        src: url(customfonts/NMSYMS__.TTF)
    }

    table {
        bgcolor: none
    }

    ;
    tr {
        bgcolor: none
    }

    ;
    td {
        bgcolor: none
    }
    ;
    </style></head><body><table align='center' width='100%' border='0' cellspacing='0'
            cellpadding='2'>
            <tr>
                <th colspan=5 align='left' height=35>
                <h3>Temporary Corrections &nbsp;</h3>
                </th>
            </tr>
            <tr>
                <th colspan=5 align='left'><b>
                1569(T)/13&nbsp;&nbsp;&nbsp;&nbsp; JAPAN - Hokkaidō West Coast. Kamui
                Misaki - Light.&nbsp;</b></th>
            </tr>
            <tr>
                <td colspan=4 align='left'>Source: <authority>Japanese
                Notice 11/5141(T)/13</authority>&nbsp;</td>
            </tr>
            <tr>
                <td align='left' colspan=4></td>
            </tr>
        </table></body></html>

您可以在上表JAPAN - Hokkaidō West Coast. Kamui Misaki - Light.的第二个tr中看到。有一个特殊字符ō。此字符转换为生成的pdf文件中的问号标志,但我不想要这样。应该是这样的。

在网页上,它显示为原样。

下面是我使用dompdf库的php代码: -

   $file= "files/2012_Week_40_info.html";
                 $NMtextpdfFile = 'nmtext.pdf';
                    $content = file_get_contents($file);
                    $dompdf = new DOMPDF();
                $dompdf->load_html($content, 'UTF-8');

                $dompdf->set_paper('A4', 'portrait'); //portrait,landscape
                $dompdf->render();
                $output = $dompdf->output();
                file_put_contents($NMtextpdfFile, $output);

我还有一些其他特殊字符,如口音,但它们在生成的pdf中看起来很好

我认为这是字体系列问题。任何人都可以告诉我我必须使用哪种字体来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

首先,您的CSS中存在一些语法错误。分号(;)不应该在花括号之外。分号终止样式定义中的单个声明。所以样式表中的以下内容是错误的:

table {
  bgcolor: none
}

;
tr {
  bgcolor: none
}

应该是这样的:

table {
  bgcolor: none;
}

tr {
  bgcolor: none;
}

我不确定(我必须做一些测试),但那些放错位置的分号可能会导致CSS出现解析错误。

此外,您似乎试图使用@ font-face包含“nmsyms”字体。但是你实际上并没有在任何地方使用它。要使用字体(无论是来自您的系统还是使用@ font-face引用),您应该应用它,例如

body { font-family: nmsyms; }

但是对于你想要的角色,包含的DejaVu字体(在dompdf 0.6.0中)工作得很好。所以你可以轻松地删除@ font-face并使用以下内容:

body { font-family: "DejaVu Sans", sans; }