如何在ROR(Ruby)中显示PDF?
我在网上浏览过,但似乎无法找到如何在rails中显示PDF(我只能找到关于如何创建一个的信息)。
有谁知道我需要展示一个代码/宝石吗?
在你的控制器中:
def pdf
pdf_filename = File.join(Rails.root, "tmp/my_document.pdf")
send_file(pdf_filename, :filename => "your_document.pdf", :type => "application/pdf")
end
在config/environment/production.rb
:
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
要么
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
配置修改是必需的,因为它使Web服务器能够直接从磁盘发送文件,从而提高性能。
更新
如果要显示它而不是下载它,请使用send_file
:disposition
选项:
send_file(pdf_filename, :filename => "your_document.pdf", :disposition => 'inline', :type => "application/pdf")
如果你想在线显示它,这个问题将会更加完整,我可以做到。
基本上你只需要把它写在你的视图中的html中。 所以这个简单的解决方案为我工作:
在'show.hmtl.erb'
<iframe src=<%= @certificate.certificate_pdf %> width="600" height="780" style="border: none;"> </iframe>
只需将文件位置嵌入到嵌入式ruby中,作为iframe标记的源代码,即可在经过数小时和数小时的搜索后为我工作。 'certificate'是我的模型,'certificate_pdf'是我的附件。
根据PDF的来源,以下内容可能对您有所帮助。 我有一个应用程序,用于存储很多东西,其中一些还有(附加的)PDF连接到这些项目。 我将这些项目存储在/public/res/<item_id>/
。 res
表示结果, item_id
是Rails中该项的数字标识。
在视图中,我通过以下(伪代码)作为助手方法提供了PDF的链接,可以在视图中使用该方法:
def file_link(key, name = nil)
res= Ressource.find(:first, :conditions => ["key = ?", key])
list = Dir["public/res/#{res.id}/*"]
file= list.empty? ? "" : list[0]
return file if file.empty?
fn = name ? name : File.basename(file)
link_to fn, "/res/#{res.id}/#{File.basename(file)}", :popup => true
end
这里的相关部分是link_to name, "/res/#{res.id}/#{File.basename(file)}"
东西。