我有一个模块,它具有上传 pdf 文件的附件功能。我需要在浏览器/iframe 中的应用程序中显示存储的 pdf 而无需下载。是否有宝石或机会可以在 Rails 中显示/阅读 pdf。
注意: pdf 将包含图像、文本内容等。
提前致谢
兰吉特
我有一个模块,它具有上传 pdf 文件的附件功能。我需要在浏览器/iframe 中的应用程序中显示存储的 pdf 而无需下载。是否有宝石或机会可以在 Rails 中显示/阅读 pdf。
注意: pdf 将包含图像、文本内容等。
提前致谢
兰吉特
是的,在 github 中有一个名为 Prawn 的 gem。检查一下。
但是使用 Google Docs 实现此功能有更灵活的方法。您可以使用谷歌文档查看器嵌入您的 pdf。
简单地:
<a href="https://docs.google.com/gview?url={YOUR_PDF_URL}&embedded=true">Your Pdf Viewer</a>
谢谢。
This worked for me:
In the 'show.hmtl.erb'
<iframe src=<%= @certificate.certificate_pdf %> width="600" height="780" style="border: none;"> </iframe>
just put the embedded ruby of the file as the source worked for me after hours and hours of searching. 'certificate' is my model, and 'certificate_pdf' is my attachment file.
在您的控制器中定义如下函数:
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 服务器可以直接从磁盘发送文件。
你可以看看这个问题推荐的方式来在 HTML 中嵌入 PDF?
@person
我使用以下代码使用最新的Google Docs 嵌入式 pdf 代码规范使我的工作在视图中(使用示例对象) :
<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>
这是一个示例 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"
这对我有用:
<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 编码(谷歌文档查看器需要)。这是我在 CodeBiker 的回答中遇到的问题。
关于“u”的更多信息——http: //rdoc.info/stdlib/erb/1.8.7/ERB/Util%3aurl_encode