wicked_pdfを利用してRailsのアプリにPDFのダウンロード機能を追加する

はじめに

PDFを生成するgemには色々と選択肢があるかと存じます。その中でも比較的使いやすいのが、wicked_pdfというgemです。内部ではwkhtmltopdf-binaryが動いているので、正確にはwicked_pdfとwkhtmltopdf-binaryの組み合わせ、となるのでしょうか。

実装

二つのgemをインストールします。

$ gem install wicked_pdf
$ gem install wkhtmltopdf-binary

これでwicked_pdfをコントローラーから呼び出す支度が整いました。

ルーティングはコントローラと併せて適宜設定して下さい。

また、PDFファイルの文面の作成は上記の通り、erbファイルで行います。app/views以下にshow.html.erbやshow.json.erbなどと同様に、show.pdf.erbファイルを作成しましょう。そして、HTMLタグとヘルパーを利用してレイアウトを記述します。

CSSやJS、各種画像を利用したい場合は、Railsの*_link_tagの代わりに、wicked_pdfが提供する以下のヘルパーメソッドを呼び出す必要があります。これはwkhtmltopdf_binaryがRailsの環境外で動いている為、だそうです。
(参考:https://github.com/mileszs/wicked_pdf#usage-conditions—important

  • wicked_pdf_javascript_include_tag
  • wicked_pdf_stylesheet_link_tag
  • wicked_pdf_image_tag

ちなみに書面の作成には、HTMLのviewsと同様にlayoutsが利用可能です。

オプションではlayout: ‘pdf’といった形で指定しているので、app/views/layouts/pdf.pdf.erbというファイルを用意することになります。

yield以下、書面の具体的なレイアウトについては、画面を作成する際と同様なので割愛します。@postの値を利用して、テーブルを組んだり何をしたり、これと言って特別なことをせずとも、書面の作成を進めることができるかと存じます。

尚、こちらのgemにはPDFの生成に差し当たって、大量のオプションが存在しております。かなり細かいところまで操作することが可能となっており、初見では眺めているだけでも楽しい気分になれます。
(参考:https://github.com/mileszs/wicked_pdf#advanced-usage-with-all-available-options

wicked_pdfはコードのメンテナンスが頻繁に行われており、スターの数も十分なgemです。他にも選択肢は色々あるかと存じますが、PDFの生成に関しては当面、こちらのgemを利用していけば問題ないように感じております。

Rails

Posted by poison