2016-10-07 25 views
0

wkhtmltopdf를 사용하여 잠자리와 함께 저장된 이미지가 포함 된 내 모델의 pdf를 렌더링하려하지만 작동하지 않습니다. wkhtmltopdf에 대한 디버그 옵션을 사용할 때 HTML 페이지가 잘 렌더링되지만 PDF 자체는 이미지가 있어야하는 빈 상자를 가져옵니다. 지금까지이 사이트가 두 곳만 발견되었지만 (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 
,363,210

show.pdf.erb : 어떤 조언을 이해할 수있을 것이다 http://localhost:3000/media/W1siZiIsIjYyIl1d/imagename.png

<% 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 =!

+0

'image.url'의 값을 표시하십시오. 절대 경로라고 확신합니까? 어떤 OS를 서버, Linux 또는 Windows에 설치 했습니까? –

+0

로컬에서 프로덕션 및 리눅스에서 heroku를 실행 중입니다. URL은 절대적이지 않습니다. 문제의 하나라고 생각합니다.하지만 URL을 절대적으로 만들어 렌더링하는 방법을 찾지 못했습니다. – Ozgar

+0

시도해 볼 수 있습니다 :'<% = image_tag "# {Rails.root.to_s} /media/W1siZiIsIjYyIl1d/imagename.png"image_stored이면? %>' –

답변

0

당신은 내 솔루션 못생긴, wicked_pdf_image_tag

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

시도해 보았지만 여전히로드되지 않습니다. wicked_pdf_image_tag는 assets 폴더의 절대 경로 앞에 붙입니다. 내가 보여주고 자하는 이미지는 정적 자산이 아닌 모델의 일부이기 때문에 거기에 있지 않습니다. – Ozgar

1

내가 아는와 image_tag를 교체해야합니다. 그러나 :)

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 콜백을 첨부 할 수 있습니다. image_tag(logo.path)

참고 image_tag의 사용 대신 wicked_pdf_image_tagurlpath을 :

+0

나는 추함에 동의하지만 최후의 수단으로 이것을 시도 할 것입니다! 오랫동안 더 나은 솔루션을 찾고 있습니다. 고맙습니다. – Ozgar

1

트릭은 사용하는 것입니다.