如何在Prawn PDF中将Active Storage中的图像嵌入?

时间:2019-04-17 16:01:07

标签: ruby-on-rails prawn rails-activestorage

我正在尝试将Rails的Active Storage中的图像嵌入到对虾PDF中。

这是我在Prawn PDF班上得到的:

path = @view.rails_blob_url(@logo, :host => "localhost:3000", :protocol => "http", :locale => nil)
image(path, :vposition => :center)

当我尝试打开PDF时,出现此错误:

  InpicesController#show中的

ArgumentError   http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGdz09IiwiZXhwIjxudWxsHCJwdXIiOiJibG9iX2lkIn19--06167c36c283f6d5de63ae306b721310af11f70e/Test-Logo.png   找不到

当我将完全相同的URL复制到浏览器中时,图像将按预期显示。 5分钟后它到期(?)。

我在这里想念什么?

如何显示PDF中的图像?

为什么可以在浏览器中而不在我的PDF中渲染图像?

我已经花了一整天的时间试图让它今天开始工作,但无济于事。

2 个答案:

答案 0 :(得分:0)

试一下:

image ActiveStorage::Blob.service.send(:path_for, @company.logo_image.key), at: [X, Y], width: DESIRED_WIDTH

logo_image是实际的ActiveStorage :: Attached :: One对象。 例如

class Company
  has_one_attached :logo_image
end

此外,我相信到目前为止,仅支持两种类型:png和jpg。

答案 1 :(得分:0)

这对我有用:

def initialize_globals
  logo_from_object = @organization.logo
  @logo = StringIO.open(logo_from_object.download)
  ..
  ..
  ..
end

def print_header
  image @logo, scale: 0.10
end