Как добавить потрясающий шрифт 5 бесплатных веб-шрифтов в файл pdf, визуализированный в ruby в проекте rails 6 - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь вставить классные веб-шрифты font 5 в файл шаблона pdf, используя вспомогательный метод fa_icon в проекте Rails 6.

В Gemfile были включены следующие драгоценные камни:

gem 'wicked_pdf'

gem 'wkhtmltopdf-binary-edge'

gem "font_awesome5_rails", "~> 1.1"

Я создал файл манифеста pdf. css и добавил следующее:

/*
 *= require bootstrap
 *= require font_awesome5_webfont
 *= require_self
 */

Файл макета views/layouts/document.pdf.html.erb был создан для вывода wicked_pdf следующим образом:

<!-- app/views/layouts/document.pdf.erb -->
<!doctype html>
<html>
<head>
  <meta charset='utf-8' />
  <%= wicked_pdf_stylesheet_link_tag "pdf.css" %>
</head>
<body>
  <div id="content">
    <%= yield %>
  </div>
</body>
</html>

И Кроме того, действие controller#show было записано следующим образом:

  def show
    respond_to do |format|
      format.html
      format.pdf do
        render pdf: "Report No. #{@test.id}",
               template: "controller/show.html.erb",
               layout: "document.pdf.html.erb",
               page_size: 'A4',
               font_name: 'Font Awesome 5 Free',
               lowquality: true,
               encoding: 'UTF-8',
               zoom: 1,
               dpi: 75
      end
    end
  end

Ну, мне нужен был вспомогательный метод следующего вида:

  def checkbox_with_fa(checked_bool, label)
    check_box = checked_bool ? fa_icon('check-square', type: :regular) : fa_icon('square', type: :regular)
    sanitize("<div class='d-inline-block mr-2'>#{check_box} #{label}</div>")
  end

Шаблон представления show был записан как следует:

<td>
  <%= checkbox_with_fa(@test.first_time, 'Yes') %>
  <%= checkbox_with_fa(!@test.first_time, 'No') %>
</td>

Наконец, когда я перешел по следующему URL-адресу,

http://localhost:3000/controllers/5.pdf

Превосходные шрифты не были показаны в обработанном PDF-файле.

В противном случае * Шаблон 1029 * html хорошо отрисован, в браузере показаны отличные шрифты

http://localhost:3000/controllers/5
...