Ruby
Rails
ImageMagick
paperclip

PaperclipでPDFのサムネイルが作れない場合はフォントが足りてないのかも

Paperclip::Errors::NotIdentifiedByImageMagickErrorが出た

開発環境であるMacでPaperclipを使ってPDFをDBに登録していた時は普通に動いていたのだけれど、Amazon Linux環境で実行したら上記のエラーが出て大変困惑した。

原因:ghostscriptにフォントを登録しなければいけなかった

Qiita: Paperclip::Errors::NotIdentifiedByImageMagickError のページを見て、Paperclipのログを出すようにした。

# config/environments/development.rb
Rails.application.configure do

  # 以下を追加し再起動
  Paperclip.options[:log] = true
  Paperclip.options[:log_command] = true
end

すると、「このフォントわからん」というエラーメッセージが出ていた。
作業中に焦っていたのでそのエラーメッセージを残せてないのが自分でもミスったな…と思うのだけれど、idenfityコマンドの結果、Meiryo-Boldがないと言われていた。

解決策:IPAフォントを入れて割り当てた

Qiita: Amazon LinuxにIPAフォントをインストールして、Ghostscriptのcidfmapに登録する

このページを参考に、IPAフォントをインストールして、フォントを割り当てた。本物のMeiryo-Boldではないけれど、生成するのはサムネイルで文字の大きさはほとんど見えないレベルなのでそこは気にしないことにした。

フォントのインストール

sudo yum install -y ipa-gothic-fonts ipa-mincho-fonts

フォントを設定する

sudo vi /etc/ghostscript/<バージョン>/cidfmap.local
cidfmap.local
/IPAMincho     << /FileType /TrueType /Path (/usr/share/fonts/ipa-mincho/ipam.ttf) /CSI [(Japan1) 6] >> ;
/IPAGothic     << /FileType /TrueType /Path (/usr/share/fonts/ipa-gothic/ipag.ttf) /CSI [(Japan1) 6] >> ;

/Ryumin-Light /IPAMincho ;
/Ryumin-Medium /IPAMincho ;
/GothicBBB-Medium /IPAGothic ;
/HeiseiKakuGo-W5 /IPAGothic ;
/HeiseiMin-W3 /IPAMincho ;
/MSGothic /IPAGothic ;
/MSMincho /IPAMincho ;
/Meiryo-Bold /IPAGothic ;
/Meiryo-BoldItalic /IPAGothic ;

このあと、PaperclipでPDFを保存したら、サムネイルが生成された😄

まとめ

ImageMagickのエラーの場合はghostscriptも疑うこと!!