gpt4 book ai didi

heroku - 邪恶的PDF +fonts+heroku+rails3.2

转载 作者:行者123 更新时间:2023-12-03 13:54:55 25 4
gpt4 key购买 nike

我正在使用 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"

在 production.rb 我有
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');
}

字体在 assets/fonts还有 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...
}

关于heroku - 邪恶的PDF +fonts+heroku+rails3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com