Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

PDFKitでHTMLファイルからPDF生成

PDFKitを使ってHTMLファイルからPDFを生成してみました。
 
1)PDFKitと依存するwkhtmltopdfをインストール
 
$ vi Gemfile
 
gem 'pdfkit'
gem 'wkhtmltopdf-binary'
 
$ bundle install
 
Installing pdfkit (0.6.2)
Installing wkhtmltopdf-binary (0.9.9.1)
 
2)コントローラでPDFの設定
 
①HTMLファイルを指定して生成する場合の例
 
変換元のHTMLファイルとスタイルシートを用意し、下記indexアクションを定義します。

  def index
    html = File.read("#{Rails.root}/public/example.html")
    kit = PDFKit.new(html, :page_size => 'Letter')
    kit.stylesheets << "#{Rails.root}/public/styles.css"
    kit.to_file("#{Rails.root}/public/example.pdf")
    send_data kit.to_pdf, filename: 'example.pdf', type: 'application/pdf'
  end

 
②URLを指定して生成する場合の例
 
ヤフーのページをPDFにしてみます。

  def index
    kit = PDFKit.new('http://www.yahoo.co.jp')
    kit.to_file("#{Rails.root}/public/example.pdf")
    send_data kit.to_pdf, filename: 'example.pdf', type: 'application/pdf'
  end

※:page_size => 'Letter'
デフォルトはA4で、他にA3、Letter、Legalなど指定出来るようです。
 
3)動作確認
 
上記例では、コントローラのindexアクションに定義していますので、該当するルートに対してブラウザからアクセスするとPDFをダウンローして表示する事が出来ました。