2016-10-07 13 views
0

Я пытаюсь отобразить pdf-файл моей модели, содержащий изображения, хранящиеся в dragonfly, используя wkhtmltopdf, но я не могу заставить его работать. Html-страница отлично отображает, когда я использую опцию debug для wkhtmltopdf, но сам pdf-файл просто получает пустой ящик, куда должно идти изображение. До сих пор я нашел только два сайта, где это воспитывалось (a german blog и a google forum thread), но ни одно решение не разрешило его для меня. Мое подозрение в том, что я должен использовать абсолютные пути к файлам изображений, который предлагается в blog, но когда я пытаюсь это решение сервер застревает на:Изображения рендеринга Dragonfly в PDF с использованием wicked-pdf

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

Любые советы будут оценены!

+0

Пожалуйста, укажите значение 'image.url'. Вы уверены, что это общеизвестный путь? Какая ОС у вас на стороне сервера, Linux или Windows? –

+0

Он работает на геройку в производстве и Linux локально. И нет, URL-адрес не является абсолютным, я думаю, что это одна из проблем, но я не нашел способ сделать его абсолютным и все еще визуализировать. – Ozgar

+0

Вы можете попробовать: '<% = image_tag" # {Rails.root.to_s} /media/W1siZiIsIjYyIl1d/imagename.png "if image_stored? %> ' –

ответ

0

Вам нужно заменить image_tag с wicked_pdf_image_tag

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

Я пробовал это, он все равно не загружается. Wicked_pdf_image_tag просто добавляет абсолютный путь к папке с ресурсами. Поскольку изображение, которое я хочу показать, является частью модели, а не статическим активом, оно не находится там. – Ozgar

1

Я знаю, что мое решение некрасиво. Но это работает :)

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

Я согласен с уродством, но я попробую это в крайнем случае! Будут продолжать искать лучшие решения еще дольше. Спасибо. – Ozgar

1

Хитрость заключается в том, чтобы использовать: image_tag(logo.path)

Обратите внимание на использование image_tag и path вместо wicked_pdf_image_tag и url.

 Смежные вопросы

  • Нет связанных вопросов^_^