8

के प्रयोग पर लटका हुआ है मैं के साथ पीडीएफ फाइल डाउनलोड करने में सक्षम हूँ:पैदा पीडीएफ रेल 4 PDFkit मणि

curl google.com | wkhtmltopdf - test.pdf 

तो इसका मतलब, wkhtmlpdf स्थापना सफल रहा था।

लेकिन, जब मैं http://localhost:3000/contacts/1.pdf तक पहुंचकर पीडीएफ फ़ाइल उत्पन्न करने का प्रयास करता हूं तो यह लटकता है। स्थिति पट्टी में दिखाई देता है: Waiting for localhost...

रेल सर्वर उत्पादन:

Started GET "/contacts/1.pdf" for 127.0.0.1 at 2013-07-28 21:45:06 +0900 
    ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by ContactsController#show as HTML 
    Parameters: {"id"=>"1"} 
    Contact Load (0.3ms) SELECT "contacts".* FROM "contacts" WHERE "contacts"."id" = ? LIMIT 1 [["id", "1"]] 
    Rendered contacts/show.html.erb within layouts/application (1.4ms) 
Completed 200 OK in 99ms (Views: 57.0ms | ActiveRecord: 0.7ms) 

Gemfile:

gem 'pdfkit' 

application.rb:

config.middleware.use "PDFKit::Middleware" 

PDFKit railscast इस होना चाहिए के अनुसारजोड़कर पीडीएफ फ़ाइलों को उत्पन्न करने के लिए पर्याप्त है 0 ...


अद्यतन:

show.html.erb:

<p id="notice"><%= notice %></p> 

<p> 
    <strong>Name:</strong> 
    <%= @contact.name %> 
</p> 

<p> 
    <strong>Age:</strong> 
    <%= @contact.age %> 
</p> 

<%= link_to 'Edit', edit_contact_path(@contact) %> | 
<%= link_to 'Back', contacts_path %> 

लेआउट/application.html.erb:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Pdftest</title> 
    <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> 
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 

<%= yield %> 

</body> 
</html> 

अपडेट 2:

@ अरमान एच के लिए धन्यवाद, यह जानने में मेरी सहायता करने के लिए कि मुझे रिश्तेदारों के बजाय संपत्तियों के लिए पूर्ण पथ निर्दिष्ट करना है। जब मैं निम्नलिखित लाइनों से हटाया मैं पीडीएफ फाइल उत्पन्न करने में सक्षम था:

<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> 
<%= javascript_include_tag "application", "data-turbolinks-track" => true %> 

अब, मैं कैसे एक निरपेक्ष पथ के साथ इस विकल्प नहीं मिल सकता है। ऐसा लगता है कि यह post है जो मुझे चाहिए, लेकिन मुझे अभी भी पता नहीं चल सकता कि यह मेरे मामले के लिए कैसा दिखता है।

+0

यह कितना समय तक लटका है? क्या आपको रेल के कंसोल में 'wkhtmltopdf' से कोई त्रुटि मिलती है? कभी-कभी यह लटकता प्रतीत होता है, लेकिन वास्तव में पीडीएफ को संसाधित करने में काफी समय लग रहा है। अनुरोध को काटने से पहले आप कितने समय तक चल रहे थे? –

+0

मेरे ऊपर मैक ओएस एक्स पर मुद्दा था। अब मैं लिनक्स मिंट पर भी ऐसा ही कर रहा हूं। यह अभी भी 20 मिनट के लिए "लोकलहोस्ट की प्रतीक्षा कर रहा है ..." और ऐसा लगता है कि यह अंतहीन होगा। मुझे बस Ctrl + c द्वारा सर्वर को रद्द करना होगा। – Askar

+0

जब मैं 40 मिनट के बाद सर्वर बंद करता हूं, तो यह मेरे लिए पीडीएफ फ़ाइल उत्पन्न करता है। मैंने 1 मिनट के बाद सर्वर को बंद करने की कोशिश की, इस मामले में यह दिखाया गया: कमांड विफल:/usr/bin/wkhtmltopdf --page-size पत्र - मार्जिन-टॉप 0.75in - मार्जिन-दाएं 0.75in - मार्जिन-तल 0.75in - मार्जिन-बाएं 0.75in - एन्कोडिंग यूटीएफ -8 --quiet - - – Askar

उत्तर

8

मुद्दा सापेक्ष URL है, जो अक्सर wkhtmltopdf का कारण बनता है जब कि wkhtmltopdf पर चल रहा है एक ही सर्वर से संपत्ति लोड हो रहा है लटका का उपयोग कर की वजह से stylesheet_link_tag और javascript_include_tag था।

का उपयोग कर संपत्तियों के लिए पूर्ण URL समस्या हल हो गई।

सेट asset_host रेल 'config है, जो भी stylesheet_link_tag और javascript_include_tag को प्रभावित करता है में:

# Modify asset host config setting in `config/application.rb` 
# Or create a new initializer: `config/initializers/wkhtmltopdf.rb` 
config.action_controller.asset_host = "http://mysite.com" 

# Or you can have different hosts for development (local) and production (CDN): 
# In `config/environments/development.rb` 
config.action_controller.asset_host = "http://localhost" 
# In `config/environments/production.rb` 
config.action_controller.asset_host = "http://d111111abcdef8.cloudfront.net" 
+0

धन्यवाद! कॉन्फ़िगरेशन में, मुझे किस फ़ाइल को संपादित करना चाहिए? मेरे पास कोई होस्ट नाम नहीं है, मैं ऐप localy चला रहा हूँ। "Http://mysite.com" के बजाय इस मामले में मुझे क्या निर्दिष्ट करना चाहिए? – Askar

+0

या तो 'लोकलहोस्ट' या '127.0.0.1' (या जो भी स्थानीय आईपी आपको रेल कंसोल से मिलता है)। –

+0

config.action_controller.asset_host = "http://mysite.com" जोड़ने के लिए मुझे किस फ़ाइल को संपादित करना चाहिए? – Askar

3

स्थापना config.action_controller.asset_host = "http://localhost" development.rb में वास्तव में मेरे लिए काम नहीं किया। यही है, पीडीएफ पीढ़ी काम करेगी, लेकिन फिर HTML को प्रस्तुत करते समय संपत्तियां नहीं आतीं।

मैं यहाँ विधि का पालन: http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku

और यह मेरे लिए एक आकर्षण की तरह काम किया। उम्मीद है कि यह किसी की मदद करता है। बस config. intbizers में property.rb फेंक दें और आप जाने के लिए अच्छे हैं।

+0

यह बहुत बेहतर जवाब है! धन्यवाद!!!!! – Axil

+0

इसका मतलब स्थानीय रूप से कहां है? सामने या बैकएंड? – Axil

+0

क्या आप किसी आईपी पते से 'लोकलहोस्ट' तक पहुंच रहे थे, या इसके विपरीत? यही है, शायद आप 'property_host =" http: // localhost "सेट करते हैं, लेकिन' http: // 127.0.0.1/my_app/some-path' के माध्यम से उत्पन्न करने की कोशिश कर रहे थे? –

0

मुझे वही समस्या थी जिसमें मेरा लॉग दिखाया गया था कि पेज प्रस्तुत किया गया था, हालांकि कोई पीडीएफ उत्पन्न नहीं हुआ था और ब्राउज़र लटका होगा। यह ओएस संगतता, लापता पुस्तकालयों, रत्नों और न ही निर्भरताओं के साथ कुछ भी करने के लिए समाप्त नहीं हुआ, बल्कि इसके बजाय मुझे अपने प्यूमा सर्वर (जिसे 1 तक सेट किया गया था) के लिए अधिकतम स्वीकार्य थ्रेड गिनती बढ़ाने की आवश्यकता थी, 2 या उससे अधिक तक। इसके बाद पीडीएफ सामान्य के रूप में उत्पन्न हुआ।

संबंधित मुद्दे