【问题标题】:Forcing the inline rendering of a PDF document in Rails强制在 Rails 中内联呈现 PDF 文档
【发布时间】:2011-06-12 02:34:38
【问题描述】:

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

我需要 PDF 以内联方式显示,就像任何常规 HTML 页面一样。虽然我写的代码是对的,但一定是缺少了一些东西——浏览器一直要求用户下载。

这是当前代码:

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

有什么想法吗?

【问题讨论】:

  • 这取决于浏览器。您确定您正在测试的浏览器能够内联显示 PDF 吗?
  • 是的,我是...实际上,我正在编写的一段代码(在 Ruby 中)正在替换一个旧的、有缺陷的 Java 实现。我正在处理的应用程序中“PDF 生成服务”的 URL 是可配置的,所以我只是用我的替换了旧的实现。旧的显示内联,我的要求下载。我现在将检查两者的响应标头。

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


【解决方案1】:

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

另一个选项是使用iframe 并将iframesrc 设置为您的PDF 文件。几乎所有支持内联 PDF 查看的浏览器都能正确处理这个问题。不利的一面是,您最终可能会显示一个空白的 iframe,而不受支持的浏览器会优雅地退回到简单地下载 PDF。

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多