在使用wkhtmltopdf时,我已经阅读了许多关于使用多种字体样式/面孔的麻烦的主题 .
我们目前在同一页面上以常规样式和粗体样式使用Nunito(由Google webfonts提供)时遇到问题 . 我们已经尝试了许多(可能的)解决方案,但它们都没有给我们提供解决方案 .
我们尝试了以下解决方案,但还没有人成功:
-
使用FontForge更改字体系列名称
-
使用fontsquirrel转换字体
-
使用openssl(mac)手动将字体转换为base64
-
转换为base64 http://www.opinionatedgeek.com/dotnet/tools/base64encode/default.aspx
-
使用字体的远程包含(来自google webfont)
-
将字体更改为SVG
以上所有方法均无效 . 浏览器确实正确渲染它,但是wkhtmltopdf似乎正在渲染它 .
我们已经发布了一些测试用例:http://bannes.nl/fonts
如果有人对如何解决此问题有任何建议,请告诉我 . 如果您使用的是mac并安装了wkhtmltopdf,请随时在http://bannes.nl/fonts上测试案例 . 我已将每个测试用例的输出PDF包含在其目录中 .
希望有人就如何解决这个问题提出建议!
最好的祝福,
知更鸟
3 回答
我花了很多时间研究同样的问题,试图让多个Gotham面孔一起工作,并且能够解决这个问题 . 我发现许多TTF / OTF字体属于集合的一部分,在TTF名称表中包含一个名为“Preferred Family”的字段 . 此字段的值将是通用集合名称,如所有字体文件中的“Gotham” . 因此,实际的“姓氏”可能是唯一的,例如“Gotham Book”或“Gotham Light”,但“Preferred Family”在所有文件中都是通用的 .
如果您在Linux上使用类似fc-list的内容检查已安装的字体,您将看到该字体有两个系列名称:
这就是问题所在 . 当在同一个PDF中使用同一系列中的多个面时,wkhtmltopdf(不确定这是webkit还是QT的东西)似乎只选择“首选系列”中的一种字体并使用它来渲染所有应该由该组中的不同字体显示的文本 .
幸运的是,您可以使用FontForge等工具完全删除字体文件中的“Preferred Family”字段 . 我为Gotham家族的所有变种做了这个,我需要并重新安装它们,这解决了双姓的问题:
这允许wkhtmltopdf在我的系统上正确渲染所有字体 .
使用此类似的实用程序,由更多开发人员支持:https://github.com/plessl/wkpdf
如果这对您不起作用,请检查您是否拥有最新版本的
wkhtmltopdf
如果以上操作根本不起作用,您可以尝试使用其他命令行实用程序或强大的解决方案,例如:"LaTeX":https://www.latex-project.org/
为什么不改变lib?
我使用了wkhtmltopdf,但我找到了内心的和平TCPDF
我打印了一个HTML页面