2010-07-06 18 views
10

मैं रेल का उपयोग कर रहा निष्पादन wkhtmltopdf साथ एक पीडीएफ उत्पन्न करने के लिए और उसके बाद परिणाम वापस PDF फाइल के रूप में उपयोगकर्ता के लिए भेजने के लिए send_data का उपयोग कर।रेल send_data "यूटीएफ -8 में अमान्य बाइट अनुक्रम" फेंकता है ... लेकिन क्यों?

view = ActionView::Base.new(ActionController::Base.view_paths, {}) 
html = "<h1>A heading</h1>" 
pdfdata = `echo '#{html}' | #{RAILS_ROOT}/lib/pdf/wkhtmltopdf-i386 - -` 
send_data pdfdata, :filename => 'readthis.pdf', :disposition => 'attachment', :type => "application/pdf" 

पीडीएफ ठीक से उत्पन्न होता है, लेकिन रेल send_data विधि से ArgumentError (invalid byte sequence in UTF-8) शिकायत। :type => text/html के रूप में "foobar" भेजने के लिए इसे बदलना इसे काम करता है, इसलिए यह निश्चित रूप से pdfdata के साथ समस्या हो गई है।

मुझे समझ नहीं आता। send_dataबाइनरी डेटा भेजने के लिए नहीं है? बेशक यह मान्य यूटीएफ -8 नहीं है। या क्या मैं कुछ न कुछ भूल रहा हूं?

धन्यवाद

+0

आप किस रूबी का उपयोग कर रहे हैं? Send_file काम करता है? क्या आपने स्वभाव => इनलाइन भी कोशिश की? –

+0

मैं रूबी का उपयोग कर रहा हूं 1.9.1 – doctororange

उत्तर

11

रेल यूटीएफ -8 मानते हैं। यह स्पष्ट रूप से बता रहा है कि यह बाइनरी डेटा समस्या हल करता है। आपकी सहायता के लिए धन्यवाद.

pdfdata.force_encoding('BINARY') 
0

आप चर pdfdata निरीक्षण और जाँच करें कि क्या यह उचित है या नहीं था?

+0

ठीक है, इसमें निश्चित रूप से वर्ण शामिल हैं जिन्हें टर्मिनल आउटपुट या विम द्वारा उचित रूप से प्रदर्शित नहीं किया जा सकता है, लेकिन इसकी अपेक्षा की जा सकती है, है ना? यह एक पीडीएफ फाइल है। – doctororange

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