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を利用していけば問題ないように感じております。