我使用Rails生成带有可执行文件wkhtmltopdf的PDF,然后使用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从send_data方法引发ArgumentError(UTF-8中的无效字节序列).将其更改为发送“foobar”为:type => text / html使它工作,所以它绝对有一个pdfdata的问题.
我不明白send_data是不是应该发送二进制数据?当然这是无效的UTF-8.还是我错过了什么?
谢谢
解决方法
Rails假定UTF-8.明确地说明它是二进制数据解决问题.谢谢你的帮助.
pdfdata.force_encoding('BINARY')