WickedPDF свободный стиль на Heroku - PullRequest
0 голосов
/ 27 апреля 2019

Я генерирую PDF с WickedPdf, и он работает как очарование локально ...

У меня проблемы с Heroku.Я могу скачать pdf, но у него вообще нет стиля .... (ни в моих заказах, ни в моих стикерах)

Вот мой код:

pdf.scss находится в vendor/assets/stylesheets

orders_controller.rb

def show
  respond_to do |format|
    format.html { }
    format.pdf do
     html = render_to_string(template: "clients/orders/show.pdf.erb", layout: "layouts/application.pdf.erb", orientation: "Landscape", page_size: 'A4', encoding:"UTF-8" )
     pdf = WickedPdf.new.pdf_from_string(html)
     send_data(pdf, filename: "order.pdf", type: "application/pdf", disposition: 'attachment')     
    end
  end
end

sticker_controller.rb

def show
  respond_to do |format|
    format.html { }
    format.pdf do 
      html = render_to_string(template: "admin/stickers/show.pdf.erb", layout: "layouts/application.pdf.erb", orientation: "Landscape" )
      pdf = WickedPdf.new.pdf_from_string(html)
      send_data(pdf, filename: "sticker.pdf", type: "application/pdf", disposition: 'attachment')     
    end
  end
end

config / initializer/assets.rb

Rails.application.config.assets.precompile += %w( pdf.scss )

config / initializer / wicked_pdf.rb

if Rails.env.production?
  WickedPdf.config = {
   exe_path: Gem.bin_path('wkhtmltopdf-heroku', 'wkhtmltopdf-linux-amd64'),
   page_size: 'Letter',
   orientation: 'Portrait',
   margin: { top:    2,
           bottom: 2,
           left:   2,
           right:  2 }
 }

else

 WickedPdf.config = {
    exe_path: '/usr/local/bin/wkhtmltopdf',
    page_size: 'Letter',
    orientation: 'Portrait',
    margin: { top:    2,
             bottom: 2,
             left:   2,
             right:  2 }

  }
end

Gemfile

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary', '~> 0.12.3'
gem "wkhtmltopdf-heroku"

layouts / application.pdf.erb

<html lang="fr">
<head>
  <meta charset="utf-8" />
    <%= wicked_pdf_stylesheet_link_tag 'pdf' %>
</head>
<body>
  <div>
    <%= yield %>
  </div>
</body>
</html>

Также в моих заказах и наклейках show.pdf.erb Я использую загрузочный CDN наtop (я использую bootstrap 4 для остальной части приложения, но похоже, что Wickedpdf не работает с bootstrap 4).Bootstrap CDN работает локально

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<div id="container">
  <div class="row">
    <table class="table table-striped line-items">
    #the test of the code
    </table>
   </div>
</div>

Я нашел этот пример , но он не работает для меня .. Я на рельсах 5.2, и в этом может быть разница ... Предлагается добавитьэто, но на самом деле это в инициализаторах / assets.rb

в config/environments/production.rb:

config.assets.precompile += ['documents.css.scss.erb']

1 Ответ

0 голосов
/ 27 апреля 2019

Таким образом, основная проблема стиля возникла из-за Bootstrap.

Ссылка на Bootstrap CDN не сделала свою работу, поэтому я закончил загрузкой bootstap css .По сути, я снял галочку со всего и сохранил только то, что нужно, как обычный css.

Я уменьшил загрузочный css, вставил его в новый файл bootstrap.min.css и поместил его в vendor/assets/stylesheets/ с помощью pdf.scss

Затем я импортировал файл boostrap в свой файл pdf.scss, например:

@import "bootstrap.min";
...