wicked_pdf:生产中的UTF-8编码问题

时间:2019-05-22 08:23:10

标签: ruby-on-rails wicked-pdf wkhtmltopdf-binary

在我的Rails 5应用程序中,我使用 wicked_pdf wkhtmltopdf-binary gem从HTML生成PDF。但是在生产中生成PDF时存在一些问题。货币符号显示不正确,但是在开发中工作正常。

这是我的PDF图片。

my production pdf screenshot

我的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到其他类似问题。他们都建议我在布局文件中添加meta。我也将其添加到布局文件中。

已编辑

我的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 个答案:

答案 0 :(得分:1)

除了编码问题(看起来应该设置得很好,只有我会使用@reboot /home/myapp/bin/console app:mycommand 才能确定)之外,生产机器上的字体可能也会有问题。

尝试的事情:

  1. 如果其他unicode字符正确呈现,则呈现它们-这不是编码问题
  2. 较新的Content-Type-(当时为0.12.4)或wkhtmltopdf-binary(其他宝石,目前已过时)
  3. 确保生产服务器已安装并设置wkhtmltopdf_binaryfontconfig,并确保它包含您正在使用的字体
  4. 使用网络字体(在我的测试中,前一段时间eot格式似乎可以工作,但是现在woff2可能更好)