41
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでwickedpdfを用いてPDF出力する方法

Last updated at Posted at 2014-06-19

はじめに

wickedpdfは、HTMLでレンダリングしたページをそのままpdf化することができるライブラリです。railsで使いやすい感じで設計されている印象を受けました。

デフォルトでは日本語が表示されない仕様となっているので、そこの部分も含め以下で使い方を書いていきます。

実行環境

  • CentOS 5.6
  • Ruby 2.1.0
  • Ruby on Rails 4.1.1

下準備

Gemインストール

はじめにGemfileに使用するgemを書いて、bundle installします。

~ vim Gemfile
Gemfile
# add 2 lines
gem 'wkhtmltopdf-binary'
gem 'wicked_pdf'
~ bundle install

パス設定

config/initializersにwicked_pdf.rbというファイルを作成し、パスを記述します。

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

これで日本語も問題なく表示されるようになったかと思います。

参考

41
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?