簡體   English   中英

在 wicked_pdf 中使用 ActiveStorage 圖像

[英]Use ActiveStorage Image in wicked_pdf

我無法讓 ActiveStorage 圖像在生產中工作。 我想在我生成的 PDF 正文中使用調整大小的圖像(變體)。

= image_tag(@post.image.variant(resize_to_limit: [150, 100]))

它在開發中有效,但在生產中生成 PDF 會無限期地掛起,除非我把那條線拿出來。

我已經嘗試過@post.image.variant(resize_to_limit: [150, 100]).processed.url和設置Rails.application.default_url_options = { host: "example.com" }

具有諷刺意味的是,當我重新啟動Passenger 時,它會將PDF 發送到瀏覽器,它實際上看起來還不錯。 圖像包括在內。

這是類似的:

= wicked_pdf_image_tag(@post.image.variant(resize_to_limit: [150, 100]).processed.url)

Rails 7.0.3、Ruby 3.1.2、wicked_pdf 2.6.3

感謝@Unixmonkey,我添加了passenger_min_instances 3; 到我的 Nginx 配置中的服務器塊,它最初可以工作,但會在負載下掛起乘客。 因為我沒有內存來增加這個數字,所以我想出了一個基於從文件中讀取圖像的不同解決方案。

= image_tag(active_storage_to_base64_image(@post.image.variant(resize_to_limit: [150, 100])))

然后我在 application_helper.rb 中創建了一個助手

def active_storage_to_base64_image(image)
  require "base64"
  file = File.open(ActiveStorage::Blob.service.path_for(image.processed.key))
  base64 = Base64.encode64(file.read).gsub(/\s+/, '')
  file.close
  "data:image/png;base64,#{Rack::Utils.escape(base64)}"
end

我已經為PNG文件對其進行了硬編碼,因為這就是我所需要的。 僅適用於磁盤存儲。 歡迎改進

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM