2012-02-28 2 views
2

Я работаю с wicked_pdf для создания некоторых PDF-файлов в Rails, и он отлично работает в моей среде dev, но я получаю ошибку 500 (но никаких конкретных ошибок в моем log), когда я пытаюсь создать его в моей рабочей среде. Первым, что я заметил, что wkhtmltopdf двоичная был в другом месте на моем поле производства, поэтому я добавил следующее к моему wicked_pdf.rb инициализатору:Wicked_pdf работает отлично в разработке, но не в производстве

if Rails.env == "production" 
    WickedPdf.config = { 
     :exe_path => '/usr/bin/wkhtmltopdf' 
    } 
end 

Вот как я звоню его в моем контроллер:

def certificate 
    @inspection = Inspection.find(params[:id]) 
    @council = Council.find(@inspection.councilid) 
    respond_to do |format| 
     format.pdf do 
      render :pdf => @inspection.slug, 
        :show_as_html => params[:debug].present?, 
        :margin => {:top   => 0, 
           :bottom   => 0, 
           :left   => 0, 
           :right   => 0} 
     end 
    end 
    end 

А вот содержимое моего зрения:

# certificate.pdf.erb 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <style type="text/css"> 
     body { 
      margin: 0; 
      padding: 0; 
      font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, sans-serif; 
     } 

     img#bg { 
      width: 800px; 
      height: 1130px; 
      position: absolute; 
     } 

     #date p, #council p { 
      line-height: 17px; 
      font-size: 12px; 
     } 

     #council { 
      position: absolute; 
      top: 650px; 
      left: 445px;   
     } 

     #logo { 
      position: absolute; 
      top: 965px; 
      left: 98px; 
     } 

     #logo img { 
      height: 65px; 
     } 

     #address { 
      position: absolute; 
      top: 425px; 
      left: 300px;   
     } 

     #address p { 
      font-size: 22px; 
      line-height: 27px; 
     } 

     #date { 
      position: absolute; 
      top: 650px; 
      left: 98px; 
     } 

    </style> 
    </head> 
    <body> 
     <%= wicked_pdf_image_tag "certificate#{@inspection.rating}.jpg", :id => "bg" %> 

     <div id="address"> 
     <p><%= @inspection.name %><br /> 
     <%= @inspection.address("<br />").html_safe %>  </p> 
     </div> 

     <div id="date"> 
     <p><%= @inspection.date.strftime("%B %d %Y") %></p> 
     </div> 

     <div id="council"> 
     <p><%= @council.address.html_safe %><br /><br /> 
     <strong>Tel: </strong><%= @council.tel %></p> 
     </div> 

     <div id="logo"> 
     <%= wicked_pdf_image_tag "certificates/#{@council.logo}.png" %> 
     </div> 

    </body> 
</html> 

Когда я добавляю debug=true к строке запроса, кажется, генерировать OK (и wicked_pdf_image_tag помощник, похоже, создает правильное местоположение, которое, похоже, было получено в Rails 3.1). Есть идеи? Я довольно новичок в Ruby/Rails, поэтому, пожалуйста, будьте нежны!

ответ

7

Его гораздо намного легче сделать, если вы позволите рассрочку беспокоиться о поиске зависимости от wkthmltopdf. Вы можете сделать это, установив это:

gem "wkhtmltopdf-binary" 

а затем запущен комплект установки. После этого вы сможете удалить свою специальную спецификацию exe_path, и она должна работать правильно. Если это не поможет, дайте мне знать.

Джо

+0

Отлично, что получил его, спасибо! – Pezholio

+0

Просто повысьте, если вы не возражаете! Благодаря! – TheDelChop

+0

Нет проблем. Готово! :) – Pezholio

0

Если неподвижное изображение не отображается в производственной среде, пожалуйста, попробуйте

image_tag wicked_pdf_asset_base64('image.png')