3

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

注意: pdf 将包含图像、文本内容等。

提前致谢

兰吉特

4

6 回答 6

5

是的,在 github 中有一个名为 Prawn 的 gem。检查一下。

但是使用 Google Docs 实现此功能有更灵活的方法。您可以使用谷歌文档查看器嵌入您的 pdf。

简单地:

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

谢谢。

于 2013-04-25T07:52:02.997 回答
5

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.

于 2013-09-01T20:56:14.017 回答
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 服务器可以直接从磁盘发送文件。

你可以看看这个问题推荐的方式来在 HTML 中嵌入 PDF?

于 2013-04-25T07:43:27.940 回答
2

@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>
于 2013-08-12T13:21:40.313 回答
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"
于 2013-08-19T23:27:51.957 回答
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 编码(谷歌文档查看器需要)。这是我在 CodeBiker 的回答中遇到的问题。

关于“u”的更多信息——http: //rdoc.info/stdlib/erb/1.8.7/ERB/Util%3aurl_encode

于 2013-11-21T00:58:48.067 回答