我在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 </h3>
</th>
</tr>
<tr>
<th colspan=5 align='left'><b>
1569(T)/13 JAPAN - Hokkaidō West Coast. Kamui
Misaki - Light. </b></th>
</tr>
<tr>
<td colspan=4 align='left'>Source: <authority>Japanese
Notice 11/5141(T)/13</authority> </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中看起来很好
我认为这是字体系列问题。任何人都可以告诉我我必须使用哪种字体来解决这个问题吗?
答案 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; }