Rails send_data выбрасывает "недопустимую последовательность байтов в UTF-8"... но почему?

Я использую Rails для создания PDF файла с исполняемым файлом wkhtmltopdf, а затем с помощью send_data, чтобы отправить результат обратно пользователю в виде файла PDF.

 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 создается правильно, но Rails жалуется ArgumentError (invalid byte sequence in UTF-8) на метод send_data. Изменение его для отправки "foobar" как :type => text/html заставляет его работать, поэтому у него определенно возникла проблема с pdfdata.

Я не понимаю. Разве send_data не должен отправлять двоичные данные? Конечно, это недействительно UTF-8. Или я что-то упускаю?

Спасибо

Ответ 1

Rails предполагает UTF-8. Явным образом заявляю, что это двоичные данные решают проблему. Благодарим за помощь.

pdfdata.force_encoding('BINARY')

Ответ 2

Вы проверяли переменную pdfdata и проверяли, является ли она правильной или нет?