はじめに
wickedpdfは、HTMLでレンダリングしたページをそのままpdf化することができるライブラリです。railsで使いやすい感じで設計されている印象を受けました。
デフォルトでは日本語が表示されない仕様となっているので、そこの部分も含め以下で使い方を書いていきます。
実行環境
- CentOS 5.6
- Ruby 2.1.0
- Ruby on Rails 4.1.1
下準備
Gemインストール
はじめにGemfileに使用するgemを書いて、bundle installします。
~ vim Gemfile
# add 2 lines
gem 'wkhtmltopdf-binary'
gem 'wicked_pdf'
~ bundle install
パス設定
config/initializersにwicked_pdf.rbというファイルを作成し、パスを記述します。
WickedPdf.config = {
:exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary'].full_gem_path}/bin/wkhtmltopdf"
}
以上で下準備は完了です。
使い方
controllerでの設定
基本的にはpdfを使用したいcontrollerにて.pdfでアクセスされた際の処理を書くだけです。また、出力の際の細かいオプションなどについてはこちらのAdvanced Usage with all available optionsを参考にしてください。
今回は最小限の設定だけ書きます。
respond_to do |format|
format.html
format.pdf do
render :pdf => 'file_name', # 出力される際のファイル名
:template => 'manuals/show.pdf.erb', # どのViewファイルを使用するか
:layout => 'pdf.html.erb', # どのレイアウトファイルを使用するか
:encoding => 'UTF-8' # 日本語を使う場合は指定してください
end
end
これで必要なViewとレイアウトを作成し、.pdfでアクセスするとPDF形式で表示されるはずです。
なお、ViewやレイアウトではRailsのタグが使用できないため、ここは置き換える必要があります。
主要なタグに関しては以下で詳しく書きます。
タグについて
wickedpdfではrailsでよく使うタグを使用することができません。出力の際にjs, css, imageを使用する場合は以下のタグで置き換えて記述する必要があります。
# js
<%= wicked_pdf_javascript_include_tag "filename" %>
# css
<%= wicked_pdf_stylesheet_link_tag "filename" %>
# image
<%= wicked_pdf_image_tag 'filename' %>
日本語対応
このままではおそらく日本語のみ表示がされないかと思います。原因はLinuxに日本語が入っていないことです。日本語フォントをインストールします。
~ yum install -y ipa-gothic-fonts
~ yum install -y ipa-mincho-fonts
これで日本語も問題なく表示されるようになったかと思います。