【问题标题】:PDF renders as empty white boxPDF 呈现为空的白框
【发布时间】:2016-05-29 17:38:22
【问题描述】:

我有一个名为“Project”的项目,以及一个名为“file.pdf”的 PDF 文件,位于 Project/app/assets/file.pdf。我想在位于Project/app/views/static/file.html 的名为“file.html”的页面上呈现 PDF。

我写了下面的代码,但是显示的只是一个空的白框。

<embed src="../../assets/file.pdf" width="500" height="375" type='application/pdf'>

我很确定我的浏览器找不到该文件。我可能做错了什么?

更新:我还尝试了一张图片,放在app/assets/images/Image.png,像这样:

<embed src="../../assets/images/Image.png" width="500" height="375" type='image/png'>

但这也不渲染。

更新 2: 控制台输出:

在 2016-02-21 04:48:27 -0600 开始为 127.0.0.1 获取“/file” 由 StaticController#file 处理为 HTML

在布局/应用程序中渲染静态/file.html.erb (63.8ms) 在 757 毫秒内完成 200 次 OK(查看次数:749.4 毫秒 | ActiveRecord:0.0 毫秒)

在 2016-02-21 04:48:28 -0600 开始 GET "/assets/application.self-e570ac372b74f676a029186250aeeba9bf7016bcd014314d103b5d18b3eb858e.css?body=1" for 127.0.0.1

2016-02-21 04:48:28 -0600 开始 GET "/assets/pdf-8f705790d319666d8f804cf8809f4d74f036483049ef8c520646d6c98ebedc5f.png" for 127.0.0.1

在 2016-02-21 04:48:28 -0600 开始 GET "/assets/Advanced_Reading_Sample.pdf" for 127.0.0.1

【问题讨论】:

  • 你用的是什么浏览器?我有确切的设置并使用 chrome 我能够呈现 pdf 文档。
  • @NormanBentley 我在 Ubuntu 上使用最新版本的 Chrome。
  • 奇怪,我在 Windows 上,没有可用的 Ubuntu VM。如果将它们放在同一个文件夹中并更新 src 怎么样?只是 src="file.pdf"
  • @NormanBentley 这给出了相同的结果。
  • 您的代码看起来正确,请尝试嵌入另一个 pdf 或图像。

标签: html ruby-on-rails pdf path render


【解决方案1】:

在你的控制器里写,

def file
  pdf_filename = File.join(Rails.root, "/assets/file.pdf")
  send_file(pdf_filename, :filename => pdf_filename, :disposition => 'inline', :type => "application/pdf")
end

重命名您的 file.html => file.html.erb 并将其放在 views/controller_name/file.html.erb 下,同时添加此控制器操作的路由。

在上述设置中,当您访问控制器/文件/时,pdf 将显示在浏览器中(内联)。

【讨论】:

    【解决方案2】:

    试试这个,看看它是否有效

    <iframe src="yourfile.pdf" style="width:100%; height:700px;" frameborder="0"></iframe>
    

    【讨论】:

    • 我得到一个屏幕,告诉我该路径没有匹配的路径。
    • 您看到这部分了吗src="yourfile.pdf" 您是否尝试将该部分链接到您的 pdf 所在的位置?例如src="../../assets/file.pdf" 。尝试将其链接到您的文件。如果您的文件是 pdf,则必须显示。
    • 我也试过了,但它仍然告诉我找不到路线。
    • @JoeMorano 检查您的文件,它必须是 pdf,否则您的路径可能不正确,即 src="../../assets/file.pdf" 该路径可能未指向该文件或文件可能已损坏导致白屏。如果它不起作用,我们可以尝试另一种方法
    • @JoeMorano 如果您将 pdf 复制到 file.html 文件所在的同一文件夹中,试试这个直接路径 src="file.pdf" 试试。我在这里工作。
    【解决方案3】:

    app/assets 中创建名为pdf 的文件夹(例如),然后将file.pdf 放在那里,然后在app/views/static/file.html 中将embed 标记中的src 更改为/assets/file.pdf。这应该可以解决问题。

    【讨论】:

    • 我试过了,但它只是显示相同的空白框。
    • @JoeMorano 哎呀,src 中应该有 /assets/file.pdf 而不是 /assets/pdf/file.pdf
    • 是的,我仍然得到相同的结果。
    • @JoeMorano 你试过重启 Rails 服务器吗?如果没有帮助,您可以在此处发布您的控制台日志吗?
    • 是的,我重新启动了服务器。我应该发布什么控制台日志?
    【解决方案4】:

    试试吧,会有帮助的

    <a href="../../assets/file.pdf" target="_blank">Click To View</a>
    

    谢谢

    Mark SykOv

    【讨论】:

      【解决方案5】:

      我不知道为什么我的应用找不到该文件。我刚刚结束了使用 iframe 和文件的绝对 url:

      <iframe src="http://www.project.com/file.pdf" style="width:100%;height:100%;"><p>Your browser does not support iframes.</p></iframe>
      

      最后,文件渲染。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-13
        相关资源
        最近更新 更多