ROR - IMGKit 和 wkhtmltoimage html 轉 image 簡單教學 並解決中文亂碼(空白)的問題

使用 IMGKit 和 wkhtmltoimage 將網頁轉成圖片的簡單教學

並解決中文亂碼的問題

設定 Gemfile

# Gemfile

gem 'imgkit'
gem 'wkhtmltoimage-binary'

建立新Jobs通過任務來呼叫他

# app/jobs/photoJob 
class photoJob < ApplicationJob
  queue_as :clinic_photo
 
  def perform(clinic)
    #預儲存的網頁網址
    URL = clinic_url(clinic_id: clinic.id) # or "https://www.google.com/"

    file = Tempfile.new(['temp', '.png'], 'tmp', :encoding => 'ascii-8bit')
    kit = IMGKit.new(URL, quality: 50, width: 1200, height: 628)
    file.write(kit.to_img(:png))
    file.flush

    #儲存圖片路徑並儲存
    clinic.photo = file
    clinic.save

    file.unlink
  end
end

使用方式

def update_clinic_photo
    photoJob.perform_later(current_clinic)
end

做到這步基本上已經可以運作了

但發現中文在這裡會出現亂碼甚至空白

發現是 linux 上支援此字元 所以出錯

所以查了一下ubuntu上的文字

https://help.ubuntu.com/community/Fonts#Chinese.2C_Japanese.2C_and_Korean_Fonts

就決定是他 ttf-wqy-zenhei


連上遠端機器輸入指令下載

sudo apt-get install openssl build-essential xorg libssl-dev libxrender-dev ttf-wqy-zenhei

之後產圖中文就能完整的出現了