在使用wkhtmltopdf时,我已经阅读了许多关于使用多种字体样式/面孔的麻烦的主题。
我们目前在同一页面上以常规样式和粗体样式使用Nunito(由Google webfonts提供)时遇到问题。我们已经尝试了许多(可能的)解决方案,但它们都没有给我们提供解决方案。
我们尝试了以下解决方案,但尚未成功:
以上所有方法均无效。浏览器确实正确渲染它,但是wkhtmltopdf似乎正在渲染它。
我们发布了一些测试用例: http://bannes.nl/fonts
如果有人对如何解决这个问题有任何建议,请告诉我。如果您使用的是mac并安装了wkhtmltopdf,请随时在http://bannes.nl/fonts上测试案例。我已将每个测试用例的输出PDF包含在其目录中。
希望有人就如何解决这个问题提出建议!
致以最诚挚的问候,
罗宾
答案 0 :(得分:10)
我花了很多时间研究同一个问题,试图让多个Gotham面孔一起工作,并且能够解决问题。我发现许多作为集合一部分的TTF / OTF字体包含一个名为" Preferred Family"在TTF名称表中。该字段的值将是通用集合名称,例如" Gotham"在所有的字体文件中。所以实际的"姓氏"可能是独一无二的,例如" Gotham Book"或" Gotham Light",但"首选家庭"将在所有文件中很常见。
如果您在Linux上使用类似fc-list的内容检查已安装的字体,您会看到该字体有两个系列名称:
这就是问题所在。当在同一个PDF中使用同一系列中的多个面时,wkhtmltopdf(不确定这是一个webkit事物还是QT事物)似乎只选择" Preferred Family"中的一个字体。并使用它来呈现该组中不同字体应显示的所有文本。
幸运的是,您可以删除" Preferred Family"字体文件中的字段完全使用FontForge之类的工具。我为Gotham家族的所有变种做了这个,我需要并重新安装它们,这解决了双重姓氏问题:
这允许wkhtmltopdf在我的系统上正确渲染所有字体。
答案 1 :(得分:1)
wkhtmltopdf
如果以上操作根本不起作用,您可以尝试使用其他命令行实用程序或强大的解决方案,例如:" LaTeX":https://www.latex-project.org/
答案 2 :(得分:1)
为什么不改变lib?
我使用了wkhtmltopdf但是我发现了TCPDF
的内心和平我打印了一个执行此操作的HTML页面
// set font
$pdf->SetFont('itclegacysansltmedium', '', 12);
// add a page
$pdf->AddPage();
// set some text to print
ob_start();
include('view.php');
$html = ob_get_clean();
$pdf->writeHTML($html, true, false, true, false, '');
答案 3 :(得分:0)
我来到这里是为了寻找“wkhtmltopdf 字体冲突”。
FontForge 对我不起作用。相反,我安装了命令行工具 ttx
(通过 OS X 上的 brew install fonttools
)。
那么:
ttx /path/to/font.otf
,输出 /path/to/font.ttx
/path/to/font.ttx
# original:
<namerecord nameID="1" platformID="1"...>Arial</namerecord>
# updated:
<namerecord nameID="1" platformID="1"...>Arial Bold</namerecord>
ttx /path/to/font.ttx
,输出 /path/to/font#1.otf
/path/to/font#1.otf
代替 /path/to/font.otf