2015-05-07 1 views
6

Я хочу создать PDF-файл с нашим логотипом отдела. Когда я пытаюсь использовать класс WickedPdf в мой контроллер (с использованием метода, описанного в https://github.com/mileszs/wicked_pdf):Wicked-PDF не показывает изображения, 'wicked_pdf_image_tag' undefined

def some_action 
    image_tag_string = image_tag('logo.jpg') 
    pdf = WickedPdf.new.pdf_from_string(image_tag_string) 

    save_path = Rails.root.join('testpdfs','logotest.pdf') 
    File.open(save_path, 'wb') do |file| 
    file << pdf 
    end 
end 

... приложение сохраняет PDF в целевой каталог, но он имеет сине-белый " ? отметьте, где должно быть изображение.

Если я вместо этого:

image_tag_string = wicked_pdf_image_tag('logo.jpg') 
    pdf = WickedPdf.new.pdf_from_string(image_tag_string) 

Я получаю следующее сообщение об ошибке:

NoMethodError: 
    undefined method `wicked_pdf_image_tag' for #<... 

Казалось бы, что мой Rails приложение также отсутствует/не ссылки на хелпера файл, принадлежащий к нечестивый-pdf.

Ответы на подобные вопросы в StackOverflow рекомендуют написать специальный помощник «образ-тег», чтобы найти изображение или установить wkhtmltopdf. Для меня образ-тег показывает логотип только отлично, когда помещается в View (whatever.html.erb). «logo.jpg» уже находится как в конвейере активов, так и в # {RailsRoot}/public/images. Наконец, я использую wkhtmltopdf 0.9.9, wicked-pdf 0.11.0 и rails 4 на Ubuntu 14.04.

Вкратце - что я делаю неправильно, что заставляет WickedPDF не отображать изображение?

+0

'wicked_pdf_image_tag' это вспомогательный метод, и как таковой он должен быть использован в представлениях или других помощников. Опубликуйте дополнительную информацию о своей реализации. –

+0

Какая информация была бы полезна? В настоящее время я запускаю указанный выше контроллер # some_action с кнопкой на тестовой странице. Я написал тест, содержащий тот же код в Rspec3, и он делает то же самое, когда я его запускаю - строит PDF, сохраняет его, ставит вопросительный знак, где должно быть изображение. – NewbieOnRails

+1

Как я уже сказал, 'wicked_pdf_image_tag' является вспомогательным методом, поэтому он не может использоваться (по крайней мере, не должен) в действии контроллера. Вы должны сделать представление, в которое вы поместили бы свое изображение, и использовать это представление для создания pdf. Но чтобы сделать длинный рассказ коротким - для wicked_pdf пути изображения должны быть полными, абсолютными путями, с полным пути файловой системы или полным URL-адресом (с доменом и протоколом). Я попытаюсь придумать какой-нибудь простой пример и разместить его здесь (если кто-то не ударит меня). –

ответ

12

Первое создать шаблон в формате PDF, чтобы сделать и использовать теги wicked_pdf в этом шаблоне .. для ПРИМЕР-

приложение/просмотров/макет/application.pdf.erb-

<!doctype html> 
<html> 
    <head> 
    <meta charset='utf-8' /> 
    </head> 
    <body onload='number_pages'> 
    <div id="content"> 
     <%= yield %> 
    </div> 
    </body> 
</html> 

приложение /views/pdf/pdf_view.pdf.erb-

<div> 
    <%= wicked_pdf_image_tag 'logo.jpg' %> 
</div> 

использовать этот шаблон вместо

def save 
    pdf = WickedPdf.new.pdf_from_string(
         render_to_string(
          template: 'example/pdf_view.pdf.erb', 
          layout: 'layouts/application.pdf.erb')) 
    send_data(pdf, 
      filename: 'file_name.pdf', 
      type: 'application/pdf', 
      disposition: 'attachment') 
end 

Это может помочь вам ..

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

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