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
查看剛剛安裝的字體是否存在。