centos使用chrome-cli、chromium或wkhtmltoimage截圖時出現的中文字符亂碼的解決方案

centos7環境下使用chrome-phpwkhtmltoimage截圖時出現的中文亂碼解決方案

最近作了一個小項目,要求使用 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命令執行。

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-cachefc-cache-64(若是有的話)

9.運行fc-list查看剛剛安裝的字體是否存在。

10.再一次運行程序腳本,查看截圖是否包含正常的中文字符。

相關文章
相關標籤/搜索