##導入方法
Gemfile
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
$ bundle install
$ rails g wicked_pdf
config/initializers/wicked_pdf.rb
WickedPdf.config = {
:exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary'].full_gem_path}/bin/wkhtmltopdf"
}
ここで一度サーバーを再起動
pdfs_controller.rb
def bill
respond_to do |format|
format.pdf do
render pdf: '請求書', # 出力されるpdfのファイル名
layout: 'application', # レイアウトファイル
encording: 'UTF-8',
show_as_html: params[:debug].present? # デバッグ用。url末尾に`debug=1`をつけるとHTMLで表示できる
end
end
end
views/layouts/application.pdf.erb
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
</head>
<body>
<div id="content">
<%= yield %>
</div>
</body>
</html>
views/pdfs/bill.pdf.erb
<p>請求書</p>
<style>
p { font-size: 20px; }
</style>
routes.rb
get 'pdf/bill' #pdf/bill.pdfにアクセスすると動く
##ハマったところと対応
###フォントサイズが全部小さい
普段のノリでフォントサイズを指定すると、全部小さく表示されます。
フォントサイズを大きい数値に変更して対応。
###本番環境のみ、AssetPilelineのコンパイルエラー
レイアウト内のCSS、JS、mysite.jpg読み込み部分を全て削除。
CSSは全部インラインで記述。(別プロジェクトを作り、Sassで書き、コンパイルしたものをコピペする)
Docker環境で日本語が表示されない
Dockerfile
を編集して、日本語フォントをインストール
Dockerfile
RUN apt-get install -y fonts-ipafont-mincho
###本番環境で日本語が表示されない
本番のサーバーに日本語フォントをインストールして対応
$ yum install -y ipa-gothic-fonts
$ yum install -y ipa-mincho-fonts
##その他注意点
- flexboxが使えない
- 画像、CSS、JS等のパスの指定方法が特殊
通常 | wicked_pdf | |
---|---|---|
cssファイル | stylesheet_link_tag | wicked_pdf_stylesheet_link_tag |
jsファイル | javascript_include_tag | wicked_pdf_javascript_include_tag |
imageファイル | image_tag | wicked_pdf_image_tag |
##参考