【问题标题】:Use PDF as an image Rails使用 PDF 作为图像 Rails
【发布时间】:2014-03-21 05:04:56
【问题描述】:

我正在使用回形针上传我的图像,在这种情况下,我想使用 pdf 作为图像并让用户可以选择下载它。我将图像上传到 S3 存储桶。

当前在尝试渲染图像时,它无法加载给定的 URL

<% for i in @timetable %>
  <%= image_tag(i.photo.url(:timetable)) %>
<% end %>

如果图像类型是 png 或 jpeg,则完全相同的代码可以工作

生成的HTML是

<img src="http://ymcagym.s3.amazonaws.com/images/timetables/13/timetable.pdf?1392893849" alt="Timetable">

将链接放在它呈现但在 pdf 阅读器中打开的 url 中时

我将如何让它作为图像打开?并且还可以选择下载

谢谢

【问题讨论】:

  • 所以 i.photo 是 pdf,而不是 png/jpg?
  • 在这个例子中是的,只要 i.photo 是 png/jpg 图像就会很好地渲染
  • image_tag 只是一个助手——它所做的只是生成一些 html。它生成什么html?问题在于i.photo.url(:timetable) - 这里的i 是什么?如果在控制台中对这种类型的对象调用 .photo.url(:timetable) 会发生什么?
  • 更新问题 MaxWilliams

标签: ruby-on-rails ruby amazon-s3 paperclip assets


【解决方案1】:

您可以在指定样式时强制使用文件格式,例如:

has_attached_file :photo,
  :styles => {
    :timetable => ['100x100#', :jpg],
    ...
  }

这应该会在上传时为您创建第一页的预览图像。请务必运行 rake paperclip:refresh 以重新生成您的资产。

【讨论】:

  • 感谢您的回答,所以如果我指定 :pdf,用户可以查看图像吗?如果需要,然后将其下载为 pdf 格式?
  • 原始文件将包含 pdf (photo.url),:timetable 样式将包含 jpg 格式的第一页预览图像 (photo.url(:timetable))。顺便说一句,如果您希望保留原始纵横比,只需将格式字符串留空,即['', :jpg] 或[nil, :jpg],我不确定。如果您愿意,也可以使用 png 作为格式。
  • 太棒了,不知道你能做到,非常感谢
猜你喜欢
  • 2018-11-16
  • 1970-01-01
  • 2011-05-05
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多