2011-10-11 22 views
6

मैं रुबी पर रूबी में एक ऐप विकसित करने के लिए उबंटू 11.04 का उपयोग कर रहा हूं। ऐप में मुझे पीडीएफ दस्तावेज़ जेनरेट करने की आवश्यकता है। तो मैं दुष्ट_पीडीएफ और wkhtmltopdf-बाइनरी रत्न का उपयोग कर रहा हूँ।wkhtmltopdf RuntimeError (wkhtmltopdf अज्ञात स्थान)

मेरे सिस्टम में विकास पर्यावरण में सब कुछ ठीक काम कर रहा है। लेकिन एक बार मैं CentOS 5.6 पर उत्पादन में एप्लिकेशन तैनात Phusion यात्री का उपयोग कर, जब मैं उड़ इसकी मुझे निम्न त्रुटि देने पर pdfs उत्पन्न करने के लिए प्रयास करें:

RuntimeError (अज्ञात wkhtmltopdf का स्थान)

मैं रूबी 1.9.2.p136 रेल का उपयोग कर रहा हूं 3.1.1

किसी भी मदद की बहुत सराहना की जाएगी .... धन्यवाद।

उत्तर

9

क्या आप स्थिर wkhtmltopdf बाइनरी का उपयोग करते हैं? मैं इसे here डाउनलोड किया है और /path/to/rails_app/bin

करने के लिए इसे extraced और इस तरह रेल में जोड़ें: मैक ओएस के लिए

#config/initializers/wicked_pdf.rb 
WickedPdf.config = { 
    :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s, 
} 
+0

i386 से amd64 में बदल गया और यह भी Heroku के लिए काम किया। –

8

- एक्स आप द्वारा homebrew

$ brew tap homebrew/boneyard # the wkhtmltopdf formula is now inactive but still available in the boneyard repository 
$ brew install wkhtmltopdf 
+0

यह अब उपलब्ध नहीं है: 'त्रुटि: wkhtmltopdf के लिए कोई उपलब्ध सूत्र नहीं' –

+0

फिर से प्रयास करें, लेकिन पहले बोनीर्ड इंस्टॉल करें: $ brew tap homebrew/boneyard ब्रू फॉर्मुलर wkhtmltopdf निष्क्रिय है लेकिन अभी भी बोनीर्ड रेपो – Hannes

10

एक वैकल्पिक करने के लिए है wkhtmltopdf स्थापित करना चाहिए Gemfile के माध्यम से बाइनरी स्थापित करें।

बस उसमें निम्न पंक्ति जोड़ें:

gem 'wkhtmltopdf-binary' 

कि लिनक्स-i386, amd64 और डार्विन के लिए द्विआधारी समर्थन जोड़ना चाहिए।

4

OS X Yosemite के लिए समाधान

यह मैक ओएस एक्स 10.10 (Yosemite) पर काम कर रहा करने के लिए, wkhtmltopdf-binary मणि स्थापित करने और फिर अपने config/initializers/wicked_pdf.rb में रख:

module WickedPdfHelper 
    if Rails.env.development? 
    if RbConfig::CONFIG['host_os'] =~ /linux/ 
     executable = RbConfig::CONFIG['host_cpu'] == 'x86_64' ? 'wkhtmltopdf_linux_x64' : 'wkhtmltopdf_linux_386' 
    elsif RbConfig::CONFIG['host_os'] =~ /darwin/ 
     executable = 'wkhtmltopdf_darwin_386' 
    else 
     raise 'Invalid platform. Must be running linux or intel-based Mac OS.' 
    end 

    WickedPdf.config = { exe_path: "#{Gem.bin_path('wkhtmltopdf-binary').match(/(.+)\/.+/).captures.first}/#{executable}" } 
    end 
end 

पी.एस. .: यह समाधान लिनक्स पर भी काम करेगा।

+1

ग्रेट के तहत उपलब्ध है! यह मेरे लिए काम किया। क्या आपको कोई विचार है कि अब इसकी आवश्यकता क्यों है? – nathanvda

+0

@nathanvda मुझे कोई जानकारी नहीं है। लेकिन मैं भी जानना चाहता हूं। –

+0

मैक ओएसएक्स के लिए, उसी तरह @ben ने देखा, बस आपको पथ सेट करना चाहिए जहां आपकी बाइनरी फ़ाइल रखी गई है, और सही नाम भी डालें, उदाहरण के लिए: Rails.root.join ('/ usr/local/bin', 'wkhtmltopdf ') .to_s, – yozzz

0

बस एक ही समस्या थी।

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
} 
0

मैक OSX: config/initializers/wicked_pdf.rb में

brew install wkhtmltopdf 

यह आप स्थापित करने के लिए करने देगा

brew install Caskroom/cask/wkhtmltopdf 

तो

रूप readme में कहा गया है, मैं एक प्रारंभकर्ता के साथ बनाया

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
}