Geração de PDFs indolor no Rails 3

Em um trabalho recente, precisei gerar relatórios em PDF. Considerei algumas soluções e optei por uma que não me fizesse perder os cabelos e reescrever código: wicked_pdf.

wicked_pdf usa wkhtmltopdf, um incrível utilitário que converte HTML para PDF, usando Webkit e QT. Você não precisa compilá-lo, basta apenas copiar o binário certo do site do projeto.

Uso

Após instalar a gem em seu sistema, você pode gerar os PDFs sem escovar bits: adicione o formato pdf entre as possibilidades de respostas de uma action, como abaixo:

  1. def report
  2.   @order = Order.find(params[:id])
  3.  
  4.   respond_to do |format|
  5.     format.html
  6.     format.pdf do
  7.       render :pdf => "order-#{params[:id]}"
  8.     end
  9.   end  
  10. end

Se quiser, você pode usar a mesma view do formato html:

  1. render :pdf => "order-#{params[:id]}", :template => "/orders/report.html.erb"

O readme da gem apresenta as informações pertinentes para seu uso e não é meu objetivo reproduzi-lo aqui, apenas chamo a atenção para um detalhe: em hosts compartilhados, você precisará definir o path correto do wkhtmltopdf. Para isso, você pode criar um initializer com o seguinte conteúdo:

  1. WickedPdf.config = { :exe_path => '/home/meuusario/wkhtmltopdf' }

PS. você pode usar o wkhtmltopdf no PHP com o Snappy. Não testei, mas pode ser uma boa opção.