【问题标题】:How to embed an image from Active Storage in Prawn PDF?如何在 Prawn PDF 中嵌入 Active Storage 中的图像?
【发布时间】:2019-04-17 16:01:06
【问题描述】:

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

这是我在 Prawn PDF 课程中学到的内容:

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

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

InvoicesController#show 中的参数错误 http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGdz09IiwiZXhwIjxudWxsHCJwdXIiOiJibG9iX2lkIn19--06167c36c283f6d5de63ae306b721310af11f70e/Test-Logo.png 没找到

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

我在这里错过了什么?

如何在我的 PDF 中显示图片?

为什么图像可以在浏览器中呈现,但不能在我的 PDF 中呈现?

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

【问题讨论】:

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


    【解决方案1】:

    试一试:

    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
    

    另外,我相信目前只支持 2 种类型:png 和 jpg。

    【讨论】:

      【解决方案2】:

      这对我有用:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-16
        • 2020-12-01
        • 1970-01-01
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多