centos7
环境下使用chrome-php
或wkhtmltoimage
截图时出现的中文乱码解决方案最近作了一个小项目,要求使用chrome/chromium
对抓取的页面进行截图保存并上传云服务,由于是composer
依赖包管理,因此使用了 chrome-php
核心代码示例: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');
结果发现截图不正确,全部中文字符乱码:html
后来提了issue,地址git
按照对方给的解决方法,并未有效解决。github
后来换了各类系统环境,包括更改中文支持,依然如故,只有在本身的mac上是正常的。chrome
因此猜测应该是字体的问题,因此尝试如下方案,最终正常显示:centos
如如下命令执行出现
permission denied
的状况,使用sudo命令执行。
which ttmkfdir
,若是没有的话,那么安装:yum install -y ttmkfdir
mkdir /usr/share/fonts/chinese
/usr/share/fonts/chinese
下,并执行chmod -R 755 /usr/share/fonts/chinese
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
/etc/fonts/fonts.conf
,在以下部位添加:fc-cache
和fc-cache-64
(若是有的话)fc-list
查看刚刚安装的字体是否存在。