Wicked PDF +字体+heroku+rails3.2

2023-11-24

我在用着邪恶_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;
} 

where 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"

在生产中.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');
}

or

@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/dosisHeroku 上的 url 正确响应:

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

如何在 Heroku 上加载字体?


wkhtmltopdf,底层程序wicked_pdf,在通过 CSS 加载字体时是出了名的时髦。在某些系统上,它使用绝对路径,有时需要相对路径。即使你正确地获得了路径,它也可能会因不准确的 CSS 减速等而被抛出。仅就这一点而言,就有数十个与此相关的问题。

我发现的最好、最灵活和最便携的解决方案是对您尝试使用的字体进行 Base64 编码,并将其直接包含到 CSS 文件中:

@font-face {
    font-family: 'OpenSans';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wicked PDF +字体+heroku+rails3.2 的相关文章

随机推荐

  • DB2 中声明全局临时表与创建全局临时表

    正在创建一个GLOBAL TEMPORARY TABLE在 DB2 中 当我冲浪时 我有两种方式来创建 1 声明 2 创造 1 DECLARE GLOBAL TEMPORARY TABLE SESSION TEMP EMP EMPNO CH
  • blogger.com 博客的社交内容储物柜?是否可以

    如何将社交内容储物柜集成到博主博客中 我们在许多 WordPress 博客和网站中看到 但在 blogger com 博客中您看不到插件选项 有人有其他方法或类似的东西吗 我希望访问者在阅读我的帖子之前点赞 推特或 g thanks 我找到
  • 使用 sed 在匹配文本块后插入一行

    我尝试使用 sed 在以下文件中的 Block B 之后插入一行 Block A line 1 line 2 Block B line 1 line 2 Block C line 1 line 2 我使用的命令 sed Block B a
  • 在运行时设置 href 属性

    设置的最佳方法是什么href的属性 a 在运行时使用 jQuery 标记 另外 你如何获得的值href的属性 a 使用 jQuery 标记 要获取或设置 HTML 元素的属性 您可以使用element attr jQuery 中的函数 为了
  • javac 错误:仅在明确请求注释处理时才接受类名

    当我编译我的java程序时出现这个错误 error Class names EnumDevices are only accepted if annotation processing is explicitly requested 1 e
  • 尝试加载 Oracle 客户端库抛出 BadImageFormatException

    尝试从 net 连接到 Oracle 数据库时出现以下异常 尝试加载 Oracle 客户端库引发了 BadImageFormatException 用32位运行64位模式时会出现这个问题 安装了 Oracle 客户端组件 经过许多链接后 我
  • 如何正确声明自引用模板类型?

    如何声明引用自身的模板类型 template
  • 如何计算 R 中样条函数的导数?

    R 可以使用 splines 库中的 splinefun 生成样条函数 但是 我需要评估该函数的一阶和二阶导数 有没有办法做到这一点 例如 library splines x lt 1 10 y lt sin pi x just an ex
  • 在 Meteor-Cordova 应用程序中播放声音

    使用没有cordova的流星我可以在浏览器中使用以下命令播放声音 new Audio test mp3 play where test mp3位于公用文件夹中 但是 一旦我在设备上将我的应用程序作为 cordova 应用程序运行 我就无法播
  • 选择元素的增长方式与显示 Flex 中的输入元素的增长方式不同

    我出现了意想不到的行为在我的设置中 输入按预期水平增长 但在具有选择控件的行上 增长似乎被扭曲 我怀疑某些风格有所不同 但仔细检查后却一无所获 谷歌搜索没有给出任何信息 我找不到任何关于隐式边距或选择填充的信息 这是关于什么的以及我该如何杀
  • JavaScript 异常列表

    这次我没有任何问题 但出于好奇 我想知道 JavaScript 中有多少异常 例如我正在使用以下代码
  • 将 pandas csv 保存到子目录

    我试图将以下代码的输出保存到子目录中 for gp in g filename gp 0 csv print filename gp 1 to csv filename 我首先创建了子目录 os makedirs MonthlyDataSp
  • 俄语 mongodb 全文搜索

    我正在尝试在 mongodb 中使用全文搜索 gt db collection insert text gt db collection insert text gt db collection insert text gt db coll
  • 无法验证应用程序并将其提交到 Mac App Store

    我已经为 iOS 应用程序进行了无数次协同设计和提交 这次让我震惊的是 Mac App Store 我反复收到相同的错误消息 我的名字 是一个有效的身份 然而 您没有关联的包标识 我在堆栈溢出上认识到这两个主题 mas 代码签名身份私钥 a
  • 当使用 Object.create(null) 创建对象时 __proto__ 如何工作

    考虑以下 JavaScript 代码 var a Object create null a foo 1 var b Object create a console log b foo prints 1 console log b proto
  • 切换两个 INT 变量的大小写

    考虑以下代码 if xPoint gt 0 yPoint gt 0 m navigations Directions SouthEast else if xPoint gt 0 yPoint lt 0 m navigations Direc
  • 如何在UIView上设置渐变边框?

    在上面放置一个简单的边框非常容易UIView 您只需链接到QuartzCore 导入它并使用 self view layer borderColor UIColor redColor CGColor self view layer bord
  • 使用fork时内存是如何映射的?

    我是 fork 的新手 我到处都读到 当调用 fork 时 当前 调用 进程的精确副本就会启动 现在 当我运行以下代码时 应该有两个不同的进程 有两个不同的进程分配给它们的变量和函数的内存位置 include
  • 如何关闭 sbcl 中的调试器

    我目前正在尝试学习 common lisp 并且一直在使用 sbcl 我希望这是一个不错的实现选择 来自 ruby 和 irb 的我发现此时每个错误的自动转移到调试器有点烦人 有没有办法在我玩的时候暂时关闭它 Common Lisp 有一个
  • Wicked PDF +字体+heroku+rails3.2

    我在用着邪恶 pdf使用 Rails 3 2 11 和 ruby 1 9 3 从 HTML 生成 PDF 并部署到 Heroku 我的 pdf css scss erb font face font family DosisMedium f