首页 文章

WkhtmlToPdf多个字体/样式

提问于
浏览
4

在使用wkhtmltopdf时,我已经阅读了许多关于使用多种字体样式/面孔的麻烦的主题 .

我们目前在同一页面上以常规样式和粗体样式使用Nunito(由Google webfonts提供)时遇到问题 . 我们已经尝试了许多(可能的)解决方案,但它们都没有给我们提供解决方案 .

我们尝试了以下解决方案,但还没有人成功:

以上所有方法均无效 . 浏览器确实正确渲染它,但是wkhtmltopdf似乎正在渲染它 .

我们已经发布了一些测试用例:http://bannes.nl/fonts

如果有人对如何解决此问题有任何建议,请告诉我 . 如果您使用的是mac并安装了wkhtmltopdf,请随时在http://bannes.nl/fonts上测试案例 . 我已将每个测试用例的输出PDF包含在其目录中 .

希望有人就如何解决这个问题提出建议!

最好的祝福,

知更鸟

3 回答

  • 1

    我花了很多时间研究同样的问题,试图让多个Gotham面孔一起工作,并且能够解决这个问题 . 我发现许多TTF / OTF字体属于集合的一部分,在TTF名称表中包含一个名为“Preferred Family”的字段 . 此字段的值将是通用集合名称,如所有字体文件中的“Gotham” . 因此,实际的“姓氏”可能是唯一的,例如“Gotham Book”或“Gotham Light”,但“Preferred Family”在所有文件中都是通用的 .

    FontForge TTF Names

    如果您在Linux上使用类似fc-list的内容检查已安装的字体,您将看到该字体有两个系列名称:

    Two Family Names

    这就是问题所在 . 当在同一个PDF中使用同一系列中的多个面时,wkhtmltopdf(不确定这是webkit还是QT的东西)似乎只选择“首选系列”中的一种字体并使用它来渲染所有应该由该组中的不同字体显示的文本 .

    幸运的是,您可以使用FontForge等工具完全删除字体文件中的“Preferred Family”字段 . 我为Gotham家族的所有变种做了这个,我需要并重新安装它们,这解决了双姓的问题:

    One family name

    这允许wkhtmltopdf在我的系统上正确渲染所有字体 .

  • 8
    • 使用此类似的实用程序,由更多开发人员支持:https://github.com/plessl/wkpdf

    • 如果这对您不起作用,请检查您是否拥有最新版本的 wkhtmltopdf

    如果以上操作根本不起作用,您可以尝试使用其他命令行实用程序或强大的解决方案,例如:"LaTeX":https://www.latex-project.org/

  • 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, '');
    

相关问题