我在创建pdf时一直尝试使用Helvetica字体,但字体不会反映在pdf中。
我做了一些谷歌并找到了一些解决方案,但没有一个是可行的。
尝试解决方案1
我在这里发现了类似的事情: Font issue
尝试了那里提到的最后一个解决方案
解决方法是在你的css中定义@ font-face 并拥有src链接 到wkhtmltopdf
可访问的外部主机
但解决方案无效。
尝试解决方案2 我也尝试使用谷歌字体API,但结果仍然不可行。 helvetica font
这是一个例子 Example of custom font
尝试解决方案3 我尝试使用css属性@page。 但这也行不通。
可行解决方案的方法是什么。
答案 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有同样的问题。对我有用的是以下过程:
注意我没有使用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'}
就是这样!我花了一段时间来修复它。