28

我在创建 pdf 时一直在尝试使用 Helvetica 字体,但字体没有反映在 pdf 中。

我做了一些谷歌并找到了一些解决方案,但没有一个是可行的。

尝试解决方案 1

我在这里发现了类似的东西: 字体问题

尝试了那里提到的最后一个解决方案

解决方法是在您的 css 中定义 @font-face并将 src 链接到可通过 wkhtmltopdf 访问的外部主机

但解决方案不起作用。

尝试解决方案 2 我也尝试使用 google font api,但结果仍然不可行。 黑体字

这是一个示例 自定义字体示例

尝试过的解决方案 3 我尝试使用 css 属性 @page。但这也行不通。

可行解决方案的方法是什么。

4

6 回答 6

33

解决wkhtmltopdf字体问题的最简单方法是对字体进行 Base64 编码(您可以使用此工具)并将其包含在您的 CSS 中:

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

这适用于所有字体(包括 Google 字体),并保证跨不同机器和操作系统的跨平台兼容性。

于 2013-07-14T18:57:07.267 回答
12

对我来说,从谷歌字体加载字体不起作用。对我来说,将 base64ed 二进制文件放入 CSS 文件似乎有点多(韩文类型为几兆字节)。我建议安装您需要在机器上使用的字体。对于 Ubuntu,您可以简单地从 Google Fonts 下载字体文件并将文件复制到$HOME/.fonts目录并fc-cache在命令行中运行命令以重建字体列表。

$ mkdir ~/.fonts
$ copy your-font-file.ttf ~/.fonts/
$ fc-cache -fv

对于 Rails 应用程序,您可以符号链接

$ ln -s /your/app/root/assets/fonts ~/.fonts

然后您将能够列出所有可用的字体。

$ fc-list
Nimbus Sans L:style=Regular Italic
URW Palladio L:style=Roman
Century Schoolbook L:style=Bold Italic
Nimbus Sans L:style=Bold
URW Chancery L:style=Medium Italic
Nimbus Roman No9 L:style=Regular
Century Schoolbook L:style=Bold
Century Schoolbook L:style=Italic
Nimbus Sans L:style=Regular
....
于 2014-10-13T09:42:47.427 回答
3

为了加入战斗,wkhtmltopdf 0.12.1 (with patched qt)在 linux 上使用这对我有用:

@font-face {
    font-family: dejaSansMono;
    src: url('file:///usr/share/fonts/dejavu/DejaVuSansMono.ttf');
} 

即,指定.ttf. 简单地命名一个字体系列,任何字体系列,即使在浏览器中也不起作用。

于 2015-03-30T21:34:26.620 回答
1

为 linux (x64) 用户扩展 baxangs 答案:您将 ttf 字体文件安装在 /usr/share/fonts/font-folder/font-name

然后在你的css文件中使用fc-list中列出的字体名,你不需要使用@font-face,只需在你的css中使用字体名

例如 Verdana.ttf======

从本地机器复制到服务器到 /usr/share/fonts/Verdana/Verdana.ttf

fc-list 获取字体名称(很可能是 Verdana)

然后在你的 css P{ font-family: 'Verdana'} 中使用

就是这样!我花了一段时间才把它修好。

于 2015-04-23T17:18:14.810 回答
1

我对谷歌的 PT Sans 也有同样的问题。对我有用的是以下过程:

  1. 从谷歌下载 PT Sans 并通过fontsquirrel 生成器运行它
  2. 将@font-face(我只使用ttf)放在css中(在我的情况下是在php文件的html头中)

请注意,我没有使用 base64,它按预期工作。

希望能帮助到你

于 2015-11-16T17:25:05.153 回答
0

要通过wkhtmltopdf将HTML 转换为 PDF ,请尽量避免使用 woff 字体。使用带有 base64 编码的 Google Web 字体的 trutype 格式。

最近我尝试使用来自 Google Web Fonts 的 Google Web 字体。但在浏览器中它显示正确,但在将 HTML 转换为 PDF 后不显示。

然后在最后从网上搜索了很多之后,我找到了将字体编码为base64编码格式的工具,并且还获得了@font-face 的CSS 。

于 2013-09-21T21:04:56.017 回答