在iframe - rails中的浏览器中显示附加的pdf

时间:2013-04-25 07:24:00

标签: ruby-on-rails

我的模块有附件功能,可以上传pdf文件。 我需要在浏览器/ iframe中的应用程序中显示存储的pdf而不下载它。是否有宝石或机会在铁轨中显示/阅读pdfs。

注意:pdfs将包含图像,文本内容等。

提前致谢

兰吉特

6 个答案:

答案 0 :(得分:5)

是的,在github中有一个名为Prawn的gem。 Check它出来了。

但是,使用Google文档实现此功能有更灵活的方式。您可以使用google docs viewer嵌入您的pdf。

简单地:

<a href="https://docs.google.com/gview?url={YOUR_PDF_URL}&embedded=true">Your Pdf Viewer</a> 

感谢。

答案 1 :(得分:3)

在您的控制器中定义如下函数:

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

在您的环境配置(developemnt.rb / production.rb)文件中:

config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

配置修改使Web服务器可以直接从磁盘发送文件。

您可以查看此问题Recommended way to embed PDF in HTML?

答案 2 :(得分:3)

这对我有用:

在'show.hmtl.erb'

<iframe src=<%= @certificate.certificate_pdf %> width="600" height="780" style="border: none;"> </iframe>

只需将文件的嵌入式ruby作为源码工作,经过数小时的搜索后我就可以使用。 'certificate'是我的模型,'certificate_pdf'是我的附件文件。

答案 3 :(得分:2)

我使用以下代码使用最新的Google Docs embedded pdf code specifications在视图中使用示例对象@person):

<iframe src="https://docs.google.com/viewer?url=http://www.mysite.com/<%= @person.pdf.url %>&embedded=true" 
width="100%" height="800" >
<p>Your browser does not support iframes.</p>
</iframe>

答案 4 :(得分:1)

以下是PDF iframe示例:

http://googlesystem.blogspot.com/2009/09/embeddable-google-document-viewer.html

只需将xyz.pdf更改为所需的文件名:

<% url = "#{request.protocol}#{request.host_with_port}#{asset_path("xyz.pdf")}" %>

<iframe src="http://docs.google.com/gview?url=<%= url %>&embedded=true" style="width:1170px; height:800px;" frameborder="0"></iframe>

如果您还没有(在application.rb中),您可能还需要添加资产路径:

config.assets.paths << "#{Rails.root}/app/assets/pdf"

答案 5 :(得分:1)

这对我有用:

<iframe src="http://docs.google.com/viewer?url=<%= u @model.modeldoc %>&embedded=true" width="600" height="780" style="border: none;"></iframe>

“u”是一种ruby方法,它会使URL成为URL编码(google doc viewer需要)。这是CodeBiker回答的问题。

有关“你”的更多信息 - http://rdoc.info/stdlib/erb/1.8.7/ERB/Util%3aurl_encode