Направляющие send_data бросают “недопустимую последовательность байта в UTF-8” …, но почему?

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

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

Спасибо

11
задан doctororange 6 July 2010 в 07:16
поделиться

2 ответа

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

pdfdata.force_encoding('BINARY')
12
ответ дан 3 December 2019 в 09:18
поделиться

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

0
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: