2011-10-15 255 views
2

我如何獲得產品的圖像以pdf格式顯示?wicked_pdf圖像渲染

我有這樣的代碼視圖文件

<div id="img-slide"> 
    <% for asset in @car.assets %> 
    <%= image_tag(asset.asset.url(:medium)) %> 
    <% end %> 
</div> 

,並給出了此車的所有圖像。

但如果我在show.pdf.erb中使用相同的代碼,那麼而不是圖像我只有問號..像圖像丟失的東西。 那麼,有沒有辦法讓他們在紙上?謝謝。

p.s.有什麼控制檯顯示

***************WICKED*************** 
    Asset Load (0.2ms) SELECT `assets`.* FROM `assets` WHERE (`assets`.car_id = 29) 
    Carmodel Load (0.2ms) SELECT `carmodels`.* FROM `carmodels` WHERE `carmodels`.`id` = 28 LIMIT 1 
Rendered cars/show.pdf.erb (255.2ms) 
"***************/usr/bin/wkhtmltopdf  -q - - ***************" 

更新

<%= pdf_image_tag('/public/system/assets/163/medium/2011_lincoln_navigator_l_angularfront.jpg', :style=>"margin:0px;padding:0px", :width=>"300", :height=>"240")%> 

這個代碼顯示的鏈接看起來應該像HTML,與此代碼我可以使車內的一張照片,但它會對於所有的汽車都是一樣的,所以我沒有做太多的事情。

163號碼是分配給汽車的資產的ID,在這裏我保留一個圖像的尺寸更大(大拇指,中等,大..),我得到了5輛不同數量的地圖。所以我有很多像這樣的數字地圖,因爲每輛車至少有5張照片。每輛車有5個資產。在show.html中,我可以看到它們,但不能用pdf。我沒有把這個應用助手:

def pdf_image_tag(image, options = {}) 
    options[:src] = File.expand_path(RAILS_ROOT) + '' + image 
    tag(:img, options) 
end 

但這只是對你有你的服務器上,將成爲所有汽車相同的圖像,我怎麼能得到每節車廂的至少一個圖像顯示在PDF? Pleaseeeee。幫幫我!!!

+0

可能是這樣的回答幫助我們 https://stackoverflow.com/a/47628899/3959987 – Balachandran

+0

這樣的回答對你有幫助 https://stackoverflow.com/a/47628899/3959987 – Balachandran

回答

6

好了,我找到了答案

<%= image_tag(asset.asset.url(:medium)) %>代碼生成的URL的圖像,在HTML看起來像<img alt="2012_bmw_7_series_gearshift" src="/system/assets/174/original/2012_bmw_7_series_gearshift.jpg?1318267462">所以我的圖片在系統地圖開始,所有我必須做的是寫一個方法application_helper.rb這樣的:

module ApplicationHelper 

def pdf_image_tag(image, options = {}) 
    options[:src] = File.expand_path(RAILS_ROOT) + '/public' + image 
    tag(:img, options) 
end 
end 

這樣wiked_pdf就會知道在公衆稱爲pdf_image_tag將從系統文件夾啓動圖像標籤,併爲pdf.html.erb最終代碼將是:

<% for asset in @car.assets %> 
    <%= pdf_image_tag(asset.asset.url(:medium), :style=>"margin:0px;padding:0px", :width=>"250", :height=>"200")%> 
<% end %> 

很容易,但還是花了我幾天的時間才弄明白。美好的一天。

+1

清潔和簡單的解決方案。謝謝。但對於Rails 4.2,您應該更改RAILS_ROOT for Rails.root,就是這樣。 – Juanin

23

版本0.7。9

<%= wicked_pdf_image_tag 'myfile.jpg' %> 

它基本上返回文件系統上的絕對路徑:

file:///path/to/image/myfile.jpg 

另見:https://github.com/mileszs/wicked_pdf

+1

感謝您的更新+1 – rmagnum2002

+0

沒有問題。總是善於給其他開發者一個領導。 – Rimian

2

而不是使用wicked_pdf_image_tag助手有可能使用image_tagimage_url軌助手一起以獲得絕對路徑圖像(這是wicked_pdf寶石所要求的):

image_tag image_url('dir/image.png') 

這裏dir/image.png是相對於Rails應用程序中標準位置的圖像路徑(圖像爲app/assets/images)。