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.