2016-10-07 18 views
0

wkhtmltopdfを使用してdragonflyで保存された画像を含むモデルのpdfをレンダリングしようとしていますが、動作させることができません。 wkhtmltopdfのデバッグオプションを使用すると、htmlページがうまく描画されますが、pdf自体は画像が表示される空のボックスを取得するだけです。 これまでのところ私は2つのサイトを見つけましたが(a german bloga google forum thread)、いずれの解決策もそれを解決しませんでした。 私の疑惑は、私がblogで提案された画像ファイルへの絶対パスを使用する必要があるということですが、私はそのソリューションをしようとすると、サーバーがで立ち往生:wicked-pdfを使用してPDFでDragonflyの画像をレンダリングする

Rendered images/show.pdf.erb (19.9ms) 
"***************[\"/home/oskar/.rbenv/versions/2.2.3/bin/wkhtmltopdf\", 
\"-q\", \"--encoding\", \"utf8\", \"--orientation\", \"Landscape\", 
\"file:////tmp/wicked_pdf20161007-8095-1nlruhe.html\", \"/tmp 
/wicked_pdf_generated_file20161007-8095-1f6vr27.pdf\"]***************" 

私のコードは次のようになります。

image.rb

class Image < ActiveRecord::Base 
    dragonfly_accessor :image 
end 

images_controller.rb:

def show 
    respond_to do |format| 
    format.html 
    format.pdf do 
     render pdf: 'name', 
      background: true, 
      encoding: 'utf8', 
      orientation: 'Landscape', 
      :show_as_html => params[:debug].present? 
    end 
    end 
end 

show.pdf.erb:

<% if params[:debug].present? %> 
    <%= stylesheet_link_tag 'document' %> 
    <%= stylesheet_link_tag 'pdf' %> 
<% else %> 
    <%= wicked_pdf_stylesheet_link_tag 'document' %> 
    <%= wicked_pdf_stylesheet_link_tag 'pdf' %> 
<% end %> 

... 

<%= image_tag image.url if image.image_stored? %> 

... 

image.url = http://localhost:3000/media/W1siZiIsIjYyIl1d/imagename.png

何かアドバイスが理解されるであろう!あなたは、私が知っているwicked_pdf_image_tag

<%= wicked_pdf_image_tag image.url if image.image_stored? %> 
+0

「image.url」の値を表示してください。あなたは絶対パスだと確信していますか?あなたはあなたのサーバー側、Linux、またはWindowsでどのOSを持っていますか? –

+0

これは、プロダクションやLinuxでherokuをローカルで実行しています。 URLは絶対的なものではありませんが、それは問題の1つだと思いますが、絶対的なものにしてレンダリングする方法は見つけられませんでした。 – Ozgar

+0

次のように試してみてください: '<%= image_tag"#{Rails.root.to_s} /media/W1siZiIsIjYyIl1d/imagename.png "image_storedならば? %> ' –

答えて

0

は、私の解決策は醜いです。しかし、それは:)

def self.export_to(path) 
    all.each do |image_model| 
    image_model.image.to_file(Rails.root.join("tmp","image", image.id.to_s)) 
    end 
end 

を働き、今、私はこのような画像をレンダリング:

<img src="<%=Rails.root.join("tmp","image", image.id.to_s)%>" alt=<%= image.name %> > 

今すぐあなたも、画像を削除するにはafter_destroyコールバックを添付できます。

+0

私はそれを試みましたが、まだ読み込まれません。 wicked_pdf_image_tagはassetsフォルダの絶対パスの前に追加されます。私が見たい画像はモデルの一部であり、静的な資産ではないので、そこには存在しません。 – Ozgar

1

image_tagを交換する必要が

+0

私は醜さに同意しますが、私は最後の手段としてこれを試みます!長い間、より良い解決策を探し続けるでしょう。ありがとうございました。 – Ozgar

1

トリックを使用することである:image_tag(logo.path)

代わりwicked_pdf_image_tagurlimage_tagpathの使用に注意してください。

関連する問題