helvetica字体在wkhtmltopdf中不起作用

时间:2013-04-01 15:24:54

标签: html css wkhtmltopdf

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

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

尝试解决方案1 ​​

我在这里发现了类似的事情: Font issue

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

  

解决方法是在你的css中定义@ font-face 并拥有src链接   到wkhtmltopdf

可访问的外部主机

但解决方案无效。

尝试解决方案2 我也尝试使用谷歌字体API,但结果仍然不可行。 helvetica font

这是一个例子 Example of custom font

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

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

6 个答案:

答案 0 :(得分:29)

解决wkhtmltopdf字体问题的最简单方法是对字体(you can use this tool)进行Base64编码并将其包含在CSS中:

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

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

答案 1 :(得分:7)

对我来说,从Google字体加载字体不起作用。将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
....

答案 2 :(得分:3)

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

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

即,指定.ttf的路径。简单地命名一个font-family,任何font-family,即使它在浏览器中也没有用。

答案 3 :(得分:1)

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

  1. 从谷歌下载PT Sans并通过fontsquirrel进行操作 发电机
  2. 在css中放置@ font-face(我只使用了ttf)(在我的例子中是在html中) 一个php文件的负责人)
  3. 注意我没有使用base64,它按预期工作。

    希望有所帮助

答案 4 :(得分:0)

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

最近,我尝试使用Google网络字体中的Google网络字体。但是在浏览器中它正确显示但在将HTML转换为PDF后它没有显示。

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

答案 5 :(得分:0)

为linux(x64)用户扩展baxangs答案:在/ usr / share / fonts / font-folder / font-name

中安装ttf字体文件

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

示例Verdana.ttf ======

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

获取字体名称的fc-list(最有可能是Verdana)

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

就是这样!我花了一段时间来修复它。