带有wicked_pdf生成器的Base64 @ font-face字体

时间:2014-01-19 19:41:21

标签: ruby-on-rails base64 font-face wicked-pdf

我正在尝试在Rails 3网站上使用wicked_pdf在HTML中使用特定字体生成PDF文件。我在这里找到了其他建议。对我来说唯一(大部分)工作的是将字体转换为base64。我在这里找到了原始答案: Wicked PDF +fonts+heroku+rails3.2

我不得不将@ font-face CSS直接放入使用它的部分文件中,而不是将其放入样式表中以使其工作。它现在在我的本地副本中工作正常。当我将它部署到我们的登台服务器时,它只有一半工作。其中一种字体加载,但字体的粗体版本无法加载。

这是我在部分中包含的@ font-face CSS(this pastebin包含完整的Base64代码,但它很有用):

<style type="text/css">
  @font-face {
    font-family: 'MuseoSans300';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQAABAA...excess text removed);
  }
  @font-face {
    font-family:'MuseoSans700';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQAABAA...excess text removed);
  }
</style>

使用这些字体的常规样式表(使用SASS)中的样式如下所示:

#profile_pdf {
  font-family: 'MuseoSans300';
  h1 {
    font-size: 30px;
    font-family: 'MuseoSans700';
  }
  h2 {
    font-size: 20px;
    font-family: 'MuseoSans300';
  }
}

我试过以各种方式改变这种情况。我使用了与此建议相同的格式: http://blog.shahariaazam.com/use-google-web-fonts-for-wkhtmltopdf-tools/#.UtwZUmQo5hE

这使它完全停止了工作。

使用上面显示的格式,它可以在我本地运行的副本上运行。在登台服务器上只有一种字体可以工作;它只加载300版本的所有内容,700版本不加载。还有其他人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:1)

我和Wicked PDF有类似的问题。我解决它的方法是定义一个字体系列,其中包含我想要定位的每个重量。它看起来像这样:

@font-face {
  font-family: 'Karla';
  font-weight: 400;
  font-style: normal;
  src: ...;
}

@font-face {
  font-family: 'Karla-Bold';
  font-weight: 700;
  font-style: bold;
  src: ...;
}

我认为您需要明确指定字体粗细数,以使其正确显示粗体版本。我的问题和你的问题完全相同,这也为我解决了。

答案 1 :(得分:0)

我认为在网址部分,如果你将它们置于资产之下,它应该是/assets/.....而不是/font,因为rails会将所有内容编译成资产