强制在Rails中内联呈现PDF文档

时间:2011-01-19 22:23:56

标签: ruby-on-rails ruby pdf content-type content-disposition

我正在编写一个从一组XML文件生成PDF文件的服务。 PDF正确生成。但是,每次我点击“查看PDF”链接时,浏览器都会要求用户下载PDF文件。

我需要PDF显示内联,就像任何常规HTML页面一样。我虽然编写了正确的代码,但必须缺少某些东西 - 浏览器一直要求用户下载。

这是当前的代码:

class PdfController < Controller
  def generate
    # stuff
    send_data pdf_bytes, :disposition => 'inline', :type => 'application/pdf'
  end
end

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

尝试完全删除Content-Disposition标题。根据我的经验,Content-Disposition: attachment工作得很好,但许多浏览器对任何其他值都有不一致的行为。如果要显示内联,最好删除标题并希望获得最佳效果。 IE似乎有这个标题最多的问题。 (惊喜,惊喜。)只要确保你仍在设置Content-Type: application/pdf

另一种选择是使用iframe并将src的{​​{1}}设置为您的PDF文件。几乎所有支持内联PDF查看的浏览器都能正确处理。缺点是你最终可能会显示一个空白iframe,而不支持的浏览器可能只是简单地下载PDF就可以实现优雅的回退。