Rails Wicked PDF

2016/07/29
    • Rails で Wicked PDF 使って PDF を出力

作成環境と前提

Rails 4.2.6
Ruby 2.3.1

前期準備

$ yum install libXrender libXext fontconfig
  • PDF日本語フォント(linux環境のみ)
$ yum install -y ipa-gothic-fonts  
$ yum install -y ipa-mincho-fonts  

  • Gemfile
gem 'pdfkit'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'

PJ作成

  • customerマスタ管理
$ rails g scaffold customer name:string name_kana:string mail:string

$ rails g wicked_pdf
create  config/initializers/wicked_pdf.rb

config/initializer/wicked_pdf.rbが生成

WickedPdf.config = {
  # which  wkhtmltopdf
  # wkhtmltopdfコマンドの位置を確認
  exe_path: '/usr/local/bin/wkhtmltopdf'
}

Controllerの編集

続いてPDF出力をしたいControllerを修正します。

  # GET /customers/1
  # GET /customers/1.json
  def show
    @customer = Customer.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.pdf do
        # 詳細画面のHTMLを取得
        html = render_to_string template: "customers/show"

        # PDFKitを作成
        pdf = PDFKit.new(html, encoding: "UTF-8")

        # 画面にPDFを表示する
        # to_pdfメソッドでPDFファイルに変換する
        # 他には、to_fileメソッドでPDFファイルを作成できる
        # disposition: "inline" によりPDFはダウンロードではなく画面に表示される
        send_data pdf.to_pdf,
          filename:    "#{@customer.id}.pdf",
          type:        "application/pdf",
          disposition: "inline"
      end
    end

  end

PDF表示の編集template作成

show.html.erb→show.pdf.erb
リンクボタンを削除

参考サイトRailsでwickedpdfを使ってPDF出力する

Post Directory