Rails отправляет данные "недопустимая последовательность байтов в 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. Или я что-то упускаю?
спасибо
2 ответов
Rails предполагает UTF-8. Говоря ему явно, что это двоичные данные, решает проблему. Спасибо за помощь.
pdfdata.force_encoding('BINARY')