我的模块有附件功能,可以上传pdf文件。 我需要在浏览器/ iframe中的应用程序中显示存储的pdf而不下载它。是否有宝石或机会在铁轨中显示/阅读pdfs。
注意:pdfs将包含图像,文本内容等。
提前致谢
兰吉特
答案 0 :(得分:5)
但是,使用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服务器可以直接从磁盘发送文件。
答案 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