2010-07-06 15 views
10

wkhtmltopdf dosyasında bir PDF oluşturmak için Rails kullanıyorum ve daha sonra kullanıcıya bir PDF dosyası olarak geri göndermek için send_data'yı kullanıyorum.Rails send_data "UTF-8'de geçersiz bayt dizisi" atar ... ama neden?

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" 

PDF düzgün oluşturulur, ancak Raylar send_data yönteminden ArgumentError (invalid byte sequence in UTF-8) şikayet ediyor. :type => text/html olarak "foobar" göndermek için bunu değiştirir, bu yüzden pdfdata ile kesinlikle bir sorun var.

Anlamıyorum. send_dataikili veri göndermek gerekiyor? Tabii ki geçerli bir UTF-8 değil. Yoksa bir şey mi özlüyorum?

Teşekkür

+0

Hangi ruby ​​sürümünü kullanıyorsunuz? Send_file çalışıyor mu? Ayrıca disposition => inline'ı denediniz mi? –

+0

Ruby 1.9.1 kullanıyorum – doctororange

cevap

11

Raylar UTF-8'i varsayar. Açıkçası bunun ikili veri olduğunu açıklayarak sorunu çözüyor. Yardım ettiğin için teşekkür ederim.

pdfdata.force_encoding('BINARY') 
0

değişken pdfdata incelemek ve bu uygun olup olmadığını kontrol ettin mi?

+0

Peki, kesinlikle terminal çıkışı veya vim tarafından doğru şekilde gösterilemeyen karakterler içeriyor, ama bu beklenen değil mi? Bu bir PDF dosyası. – doctororange

İlgili konular