邪恶的PDF字体heroku rails3.2

前端之家收集整理的这篇文章主要介绍了邪恶的PDF字体heroku rails3.2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 wicked_pdf与rails 3.2.11和ruby 1.9.3从HTML生成PDF并部署到Heroku.

我的pdf.css.scss.erb:

<% app_fullhost = Constants["app_fullhost"] %>

@font-face {
  font-family:'DosisMedium'; font-style:normal; font-weight:500;
  src: url(<%=app_fullhost%>/app/font/dosis/Dosis-Medium.ttf) format('woff');
}

*,body {
  font-family: "DosisLight",'Times New Roman','Arial',sans-serif;
}

其中app_fullhost是开发或生产中的确切主机.

我的pdf格式包括

%html{:lang => I18n.locale}
  %head
    %Meta{:charset => "utf-8"}
    %title= content_for?(:title) ? yield(:title) : Settings.app_name
    = wicked_pdf_stylesheet_link_tag "pdf"

在生产中我有

config.assets.precompile +=%w(pdf.css)

这在开发中没有问题,但是在Heroku中,pdf文件不加载所需的字体.我也尝试过不同的解决方案,如在production.rb中添加这些解决方案:

config.assets.paths << "#{Rails.root}/app/assets/fonts"
config.assets.precompile += %w(*.svg *.eot *.woff *.ttf) 
config.assets.precompile += %w(.svg .eot .woff .ttf)

我也试过改变(pdf.css.scss.erb):

@font-face {
  font-family:'Dosis'; font-style:normal; font-weight:500;
  src: url('Dosis-Medium.ttf') format('woff');
}

要么

@font-face {
  font-family:'Dosis'; font-style:normal; font-weight:500;
  src: url(<%= asset_path('Dosis-Medium.ttf')%>) format('woff');
}

字体是资源/字体,还有在public / app / font / dosis中,Heroku上的url正确地响应:

..//myapp/app/font/dosis/Dosis-Medium.ttf" and 
..//myapp/assets/Dosis-Medium.ttf

如何让字体加载到Heroku?

解决方法

wkhtmltopdf是wicked_pdf的基础程序,当通过CSS加载字体时,它是非常有趣的.在某些系统上,它使用绝对路径,有时它需要相对路径.即使您正确地获取路径,也可能会由于不正确的CSS减速等而被抛弃.有关这方面的几十个问题仅在SO上.

我发现最好,最灵活和最便携的解决方案是将Base64编码为要使用的字体,并将其直接包含在CSS文件中:

@font-face {
    font-family: 'OpenSans';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}

猜你在找的Ruby相关文章