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をダウンローして表示する事が出来ました。