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:
def report
@order = Order.find(params[:id])
respond_to do |format|
format.html
format.pdf do
render :pdf => "order-#{params[:id]}"
end
end
end
Se quiser, você pode usar a mesma view do formato html:
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:
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.