PDF KIT e wkhtmltopdf-binary

252 views
Skip to first unread message

Fillipe Norton

unread,
Apr 16, 2012, 3:18:22 PM4/16/12
to rail...@googlegroups.com
Pessoal,

Estou usando o PDFKIT e wkhtmltopdf-binary para gerar os meus documentos e relatórios em PDF.

O que acontece é que localmente tudo funciona bem. Na cópia que está hospedada estou tendo problemas e motra este erro:

RuntimeError (command failed: "/home/sgloc/apps/production/shared/bundle/ruby/1.9.1/bin/wkhtmltopdf" "--page-size" "A4" "--margin-top" "2" "--margin-right" "2" "--margin-bottom" "2" "--margin-left" "4" "--encoding" "UTF-8" "--print-media-type" "--header-center" "Cabeçalho padrão para todas as páginas" "--header-right" "página [page] de [topage]" "--header-font-size" "8" "--header-spacing" "10" "--header-line" "--quiet" "-" "-"):
  app/controllers/application_controller.rb:116:in `gerar_pdf'
  app/controllers/contratos_controller.rb:307:in `imprimir'

Nessas linhas que ele acusa o problema está tudo funcionando, em outra aplicação está confugurado da mesma forma =D

Se alguém já tiver passado por isso e puder dar alguma dica vai ajudar bastante.

Agradeço desde já

--

Fillipe Norton
@nortonfillipe

Rafael - Cote

unread,
Apr 16, 2012, 3:35:58 PM4/16/12
to rail...@googlegroups.com
E dale, Filipe

olha só da pra fazer da seguinte maneira na tua configuração coloca isso:
config.wkhtmltopdf = Rails.root.join('vendor', 'wkhtmltopdf-amd64').to_s if Rails.env=="production"

e coloca o binario na pasta vendor(no server)
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

Obs.: tem que ver se é 64 caso contrario tem a i386 lah tambem no site para baixar ai muda o nome na conf.

reinicia a aplicação e jah eras ...

Também tem outras opções tipo:
config.wkhtmltopdf = `which wkhtmltopdf`.to_s.strip
Mas no caso acima é para se o wkhtmltopdf estiver instalado no servidor caso contrario ai usa a primeira opção ...

Te+
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+u...@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

Fillipe Norton

unread,
Apr 16, 2012, 9:05:22 PM4/16/12
to rail...@googlegroups.com
Obrigao Rafael. Já já passo o feedback!

valeu

Rafael Chiarello

unread,
Apr 16, 2012, 11:45:39 PM4/16/12
to rail...@googlegroups.com
Tranquilo, mas pode faze que nao tem erro.

Fillipe Norton

unread,
Apr 17, 2012, 9:29:13 AM4/17/12
to rail...@googlegroups.com
Em qual arquivo exatamente devo colocar

config.wkhtmltopdf = Rails.root.join('vendor', 'wkhtmltopdf-i386').to_s if Rails.env=="production"

Coloquei no aplication.rb e continuou da mesmo forma.

Valeu pela ajuda

Rafael - Cote

unread,
Apr 17, 2012, 9:50:31 AM4/17/12
to rail...@googlegroups.com
Dentro da pasta config/initializers/ tem o arquivo de conf wkhtmltopdf.rb

ai dentro fica assim:

PDFKit.configure do |config|

  config.wkhtmltopdf = Rails.root.join('vendor', 'wkhtmltopdf-i386').to_s if Rails.env=="production"
end

Fillipe Norton

unread,
Apr 17, 2012, 10:15:03 AM4/17/12
to rail...@googlegroups.com
Eu nao tinha esse arquivo, criei aqui, vou ver agora

Fillipe Norton

unread,
Apr 17, 2012, 10:35:50 AM4/17/12
to rail...@googlegroups.com
Cara continua dando o mesmo problema
as linhas que ele acusa são essas

app/controllers/application_controller.rb:116:in `gerar_pdf'

send_data(kit.to_pdf, :filename => "#{params[:nome]}.pdf", :type => 'application/pdf', :disposition => 'inline')

app/controllers/contratos_controller.rb:307:in `imprimir'

gerar_pdf (render_to_string(:layout => 'relatorio.html.erb', :text => @documentos.map!{|doc| doc.gsub!('page','page break') if @break; @break = true; doc}.join().html_safe))

complicado que em minha máquina está funcionando...

Valeu pela ajuda =)

Rafael - Cote

unread,
Apr 17, 2012, 10:42:00 AM4/17/12
to rail...@googlegroups.com
Felipe coloca ai o LOG inteiro do erro ... para analisar melhor o caso ...
valeu

<
span>.strip

Rafael - Cote

unread,
Apr 17, 2012, 10:43:23 AM4/17/12
to rail...@googlegroups.com
Ops, Filipe*, sorry.
valeu

config.wkhtmltopdf = `which wkhtmltopdf`.to_s&
lt;
span>.strip

Fillipe Norton

unread,
Apr 17, 2012, 10:46:42 AM4/17/12
to rail...@googlegroups.com
Started POST "/contratos/15/imprimir/19" for 187.114.167.79 at 2012-04-17 11:39:34 +0000
  Processing by ContratosController#imprimir as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"ulLy6o9vKasQ865R9M1F9dUogCWjrSeYM7aSOapsTr0=", "contrato"=>{"contratos_locacoes"=>"19", "impressos"=>["", "", "", "", "21"]}, "commit"=>"Preparar impressão", "contrato_id"=>"15", "contratos_locacao_id"=>"19"}
Rendered text template within layouts/relatorio (0.1ms)
Completed   in 1196ms


RuntimeError (command failed: "/home/sgloc/apps/production/shared/bundle/ruby/1.9.1/bin/wkhtmltopdf" "--page-size" "A4" "--margin-top" "2" "--margin-right" "2" "--margin-bottom" "2" "--margin-left" "4" "--encoding" "UTF-8" "--print-media-type" "--header-center" "Cabeçalho padrão para todas as páginas" "--header-right" "página [page] de [topage]" "--header-font-size" "8" "--header-spacing" "10" "--header-line" "--quiet" "-" "-"):
  app/controllers/application_controller.rb:116:in `gerar_pdf'
  app/controllers/contratos_controller.rb:307:in `imprimir'


Fillipe Norton

unread,
Apr 17, 2012, 10:47:32 AM4/17/12
to rail...@googlegroups.com
Sem problema com o nome rsrs to com a cabeça fervendo com este problema!

Rafael - Cote

unread,
Apr 17, 2012, 10:54:34 AM4/17/12
to rail...@googlegroups.com
Assim felipe tem que ver se a tua aplicação esta rodando em modo produção pq ainda tah pegando o caminho errado:

/home/sgloc/apps/production/shared/bundle/ruby/1.9.1/bin/wkhtmltopdf

vamos fazer outro teste entaum nesse caso ...

tira o IF da config, assim

PDFKit.configure do |config|
  config.wkhtmltopdf = Rails.root.join('vendor', 'wkhtmltopdf-i386').to_s
end

roda na tua maquina e ve se ele tah pegando o caminho do wkhtmltopdf dentro da pasta vendor.

se estiver coloca no server e testa de novo.

Abraço!

Rafael - Cote

unread,
Apr 17, 2012, 11:05:12 AM4/17/12
to rail...@googlegroups.com
Pq assim com Rails.root.join('vendor', 'wkhtmltopdf-i386').to_s deveria setar o caminho assim:

/home/es/apps_rails/projeta/vendor/wkhtmltopdf-i386" (no meu caso)

Tem alguma treta ai .






On 17-04-2012 11:47, Fillipe Norton wrote:

Fillipe Norton

unread,
Apr 17, 2012, 11:21:38 AM4/17/12
to rail...@googlegroups.com
Ja mandei e testei de novo e ele continua setando o caminho errado


RuntimeError (command failed: "/home/sgloc/apps/production/shared/bundle/ruby/1.9.1/bin/wkhtmltopdf" "--page-size" "A4"

Rafael - Cote

unread,
Apr 17, 2012, 12:17:45 PM4/17/12
to rail...@googlegroups.com
Pois é Filipe pra mim funciona perfeitamente, se quiser me add no gtalk que ai conversamos, mas em qual servidor tu tah colocando essa aplicação ?

Abraço!

Fillipe Norton

unread,
Apr 18, 2012, 12:57:44 PM4/18/12
to rail...@googlegroups.com
Te adicionei!

ainda nao consegui configurar

Rafael - Cote

unread,
Apr 18, 2012, 8:12:59 PM4/18/12
to rail...@googlegroups.com
Opa Filipe, vi soh agora o teu email te add tambem... da um toque que veremos esse teu problema.

Abraco

Fernando Almeida

unread,
Apr 18, 2012, 8:37:13 PM4/18/12
to rail...@googlegroups.com
As configurações do pdf podem ser passadas como parâmetro, não sei se o caminho do binário é aceito assim também:

OPTIONS = {
  :page_size           => 'A4',
  :print_media_type => true,
  :margin_left          => 4
}

kit  = PDFKit.new(html, OPTIONS)
send_data(kit.to_pdf, ...)
Fernando Almeida
www.fernandoalmeida.net

Reply all
Reply to author
Forward
0 new messages