Step by Step Ruby on Rails

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

PDFKitのMiddlewareを使ってすべてのページをPDF化

pdfkitのMiddlewareを使うとすべてのページで通常のURLに.pdfを追加してアクセスするとPDFを取得する事が出来ます。
 
設定方法は、config/application.rbに下記記述を追加するだけです。
 
config.middleware.use PDFKit::Middleware
 
ブラウザが応答待ちの状態で固まってしまう場合は、下記サイトの対処方法で解決出来ました。
http://stackoverflow.com/questions/17908359/generating-pdf-hangs-on-rails-4-using-pdfkit-gem
 
上記サイトの説明では、stylesheet_link_tagとjavascript_include_tagが相対パスを使っている事が原因で、wkhtmltopdfが実行中に同じサーバーからアセットをロードするとwkhtmltopdfがハングしてしまうとの事です。
 
config/application.rbに下記設定をするとハングされずPDFが表示出来るようになりました。
config.action_controller.asset_host = "http://localhost"