常规解决wkhtmltopdf 中文乱码的方法有 安装缺失的字体、修改字符编码等,相关方法可以通过搜索引擎解决。
但目前碰到一个案情况比较少见,html中所需要的字体为宋体,windows自带,且html字符编码正确,但wkhtmltopdf转换时,对于宋体段落无法正常渲染,出现乱码,如下图:
经多方查询,最简的解决方法是,在网页头部的style标签中,手工指定宋体字体的本地存放位置,wkhtmltopdf转换时,就可正常渲染。例如:
@font-face{font-family: "宋体";src:url("C:\\Windows\\Fonts\\simsun.ttf")
问题的原因不确定,可能是由于部份网页css书写不规范,头部无字体的样式信息,而是直接在p标签中定义字体,导致wkhtmltopdf无法识别字体所致。但比较奇怪的是,同网页中,其他在p标签中存在能正常渲染的中文字体,如黑体。