我正在使用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 (invalid byte sequence in UTF-8)
。更改它以发送“foobar”作为:type => text/html
使它工作,所以它肯定遇到pdfdata
的问题。
我不明白。是不是send_data
应该发送二进制数据?当然它不是有效的UTF-8。或者我错过了什么?
由于
答案 0 :(得分:11)
Rails假定为UTF-8。明确告诉它是二进制数据解决了这个问题。谢谢你的帮助。
pdfdata.force_encoding('BINARY')
答案 1 :(得分:0)
您是否检查过变量pdfdata并检查它是否正确?