取经路上 2019-07-01
centos7环境下使用chrome-php或wkhtmltoimage截图时出现的中文乱码解决方案最近做了一个小项目,要求使用chrome/chromium对抓取的页面进行截图保存并上传云服务,因为是composer依赖包管理,所以使用了chrome-php
核心代码示例:
// navigate
$navigation = $page->navigate('https://www.baidu.com');
// wait for the page to be loaded
$navigation->waitForNavigation();
// take a screenshot
$screenshot = $page->screenshot([
'format' => 'jpeg', // default to 'png' - possible values: 'png', 'jpeg',
'quality' => 80 // only if format is 'jpeg' - default 100
]);
// save the screenshot
$screenshot->saveToFile('/some/place/file.jpg');结果发现截图不正确,所有中文字符乱码:

后来提了issue,地址
按照对方给的解决方法,并未有效解决。
后来换了各种系统环境,包括更改中文支持,依然如故,只有在自己的mac上是正常的。
所以猜想应该是字体的问题,所以尝试以下方案,最终正常显示:
如以下命令执行出现permission denied的情况,使用sudo命令执行。which ttmkfdir,如果没有的话,那么安装:yum install -y ttmkfdirmkdir /usr/share/fonts/chinese/usr/share/fonts/chinese下,并执行chmod -R 755 /usr/share/fonts/chinesettmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir/etc/fonts/fonts.conf,在如下部位添加:
fc-cache和fc-cache-64(如果有的话)fc-list查看刚刚安装的字体是否存在。