Railsでwickedpdfを使ってPDF出力する

はじめに

Ruby on RailsでPDF出力させるのに便利なgemはたくさんありますが、htmlをそのままPDF化してくれる「wickedpdf」が一番お手軽で楽でした。wickedpdfの導入手順と使用方法をメモします。基本的な手順は下記の公式サイト通りでOKでした。

mileszs/wicked_pdf | GitHub


環境と前提

  • Rails 4.2.0
  • Ruby 2.2.2


wickedpdfのインストールと準備

まずはじめに以下をGemfileに追記して

bundleでインストールします。

そして以下コマンドでwickedpdfの設定ファイルを生成します。

これでconfig/initializer/wicked_pdf.rbが生成されます。このファイルは下記のようになっています。

上記の中の「exe_path:」の後に続く部分「/usr/local/bin/wkhtmltopdf」を各環境のwkhtmltopdfのパスに合わせて修正します。
なお、各環境のwkhtmltopdfのパスは下記コマンドで確認できます。下記コマンド結果を「/usr/local/bin/wkhtmltopdf」と置き換えて下さい。

これでwickedpdfのインストールと準備は完了です。

Controllerの編集

続いてPDF出力をしたいControllerを修正します。例えば、顧客情報を扱うようなWebアプリを想定して、customer_controllerにてshowアクションを以下のように修正します。

上記のようにshowアクションの中にPDF出力のための記述を書いた場合、app/views/customerフォルダ直下のshow.pdf.erbというファイルがPDF出力用のテンプレートとして使用されます。なので事前にshow.pdf.erbを作成しておく必要があります。このshow.pdf.erbにはhtmlを記述しておくだけでOKです。ただし、画像やcssファイルなどはwicked_pdf用のタグを使用する必要があります。これについては後述します。

また、上記ではfooter用のテンプレートとしてcustomers/footer.html.erbを指定しています。これにより、app/views/customers/footer.html.erbの記述内容がfooterとして表示されます。

最後にshow_as_html: params[:debug].present?によってhtmlでのデバッグを有効にしています。これはshowアクションのPDFのURLに?debug=trueを付与したURLにアクセスすることでPDF出力内容をhtml表示してくれます。デバッグに関しては以下のサイトが参考になりました。

Rails で Wicked PDF 使って PDF を出力してみた ( 日本語もバッチリ ) | Qiita


PDFテンプレート用ファイルでのcss、画像読み込みについて

PDF出力のテンプレートファイルshow.pdf.erbでは、例えば以下の様な内容を記述しておきます。

上記のように、PDF出力用のテンプレートファイルでは、cssファイルの読み込みにはwicked_pdf_stylesheet_link_tagを、画像ファイルの読み込みにはwicked_pdf_image_tagを使用します。
なお、wicked_pdf_stylesheet_link_tagで指定する際、app/assets/stylesheetsがデフォルトのディレクトリになっています。すなわち、上記の場合だと、app/assets/stylesheets/wickedpdf配下にあるcssstyle.cssファイルが読み込まれます。
wicked_pdf_image_tagではapp/assets/imagesがデフォルトのディレクトリになっているので、上記の場合だとapp/assets/images/bodyimage.pngが読み込まれます。
このように、wickedpdfでPDF出力する際に使用するテンプレートファイルでcss、画像を読み込む場合はwickedpdf用のタグを使う必要があります。

なお、production環境では、PDF出力のテンプレートで読み込むcssをコンパイルするために、必要ならば以下の記述をconfig/environments/production.rbに記述した上でassets:precompileおきます。

実際に使ってみて

何よりお手軽にhtmlの記述通りにPDF出力してくれるのですごい楽です。公式サイトにあるようにオプションもかなり豊富です。ただ、作りこむ場合は何かと見た目通りにならない場合もあるかもしれません。うまくいかない場合は以下のサイトが大変参考になりました。ありがとうございました。

参考サイト

【Rails】wicked_pdf導入にあたってつまづいたところメモ | Qiita

このエントリーをはてなブックマークに追加

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL