centos使用chrome-cli、chromium或wkhtmltoimage截图时出现的中文字符乱码的解决方案

3次阅读

共计 1077 个字符,预计需要花费 3 分钟才能阅读完成。

在 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 命令执行。
1.fc-list 查看是否有中文字体,一般情况下是不存在的,否则也不会乱码。
2. 查看是否支持 ttmkfdir which ttmkfdir,如果没有的话,那么安装:yum install -y ttmkfdir

3.centos7 系统的话,创建字体目录,mkdir /usr/share/fonts/chinese

4. 上传本地的字体文件,例如 mac 里对应的任何一个 ttf 字体文件。
5. 将字体文件复制到 /usr/share/fonts/chinese 下,并执行 chmod -R 755 /usr/share/fonts/chinese

6. 执行 ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

7. 编辑 /etc/fonts/fonts.conf,在如下部位添加:

8. 运行 fc-cache 和 fc-cache-64(如果有的话)
9. 运行 fc-list 查看刚刚安装的字体是否存在。
10. 再一次运行程序脚本,查看截图是否包含正常的中文字符。

正文完
 0