wicked_pdf: проблема с кодировкой UTF-8 на производстве - PullRequest
1 голос
/ 22 мая 2019

В моем приложении на Rails 5 я использую гем wicked_pdf и wkhtmltopdf-binary для создания PDF из HTML. Но есть некоторые проблемы при создании PDF на производстве. Символ валюты не отображается должным образом, но в разработке он работает нормально.

Вот мое изображение в формате PDF.

Скриншот pdf моего производства

Мой Gemfile выглядит так:

gem 'wicked_pdf', '~> 1.1'
gem 'wkhtmltopdf-binary', '~> 0.12.3.1'

Код моего контроллера:

def generate_order
  @order = @user_builder.orders.find(params[:id])
  render pdf: 'billing_pdf',
  layout: 'layouts/pdf.html.erb',
  :show_as_html => params[:debug].present?, #true
  encoding: 'utf8'
end

Я перепробовал множество решений от Stackoverflow на другие подобные вопросы. Они все предложили мне добавить мета в файл макета. Я также добавил его в свой файл макета.

изм

мой файл макета PDF.

<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   <title>Billing</title>
</head>
<body>
   <div class='container'>
     <%= yield %>
   </div>
</body>
</html>

Буду очень признателен, если кто-нибудь укажет, что происходит в этом случае. Заранее спасибо.

1 Ответ

2 голосов
/ 22 мая 2019

Кроме проблем с кодировкой (которые, кажется, настроены нормально, только я бы использовал Content-Type, чтобы быть уверенным), у вас могут быть проблемы со шрифтами на рабочей машине.

Что попробовать:

  1. Рендеринг других символов Юникода, если некоторые из них отображаются правильно - это не проблема кодирования
  2. Новее wkhtmltopdf-binary - (в то время 0.12.4) или wkhtmltopdf_binary (другой драгоценный камень на данный момент устарел)
  3. Убедитесь, что на производственном сервере установлены и настроены fontconfig и libfontconfig, а также, что он содержит используемые вами шрифты
  4. Использование веб-шрифтов (в моих тестах некоторое время назад формат eot работал, но теперь woff2 может быть лучше)
...