2016-04-05 53 views
4

我使用wkhtmltopdf阅读了许多关于使用多种字体样式/面的麻烦的许多主题。WkhtmlToPdf多个字体的面孔/样式

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

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

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

我们出版了一些测试用例对: http://bannes.nl/fonts

如果任何人有关于如何解决这一问题的建议,请让我知道。如果您使用的是mac并已安装wkhtmltopdf,请随时在http://bannes.nl/fonts上测试这些案例。我已经将每个测试用例的输出PDF包含在他们的目录中。

希望有人得到了一个关于如何解决这个问题的建议!

最好的问候,

罗宾

+0

我试过你的样品。除输出pdf格式外,所有内容都可以正常显示。 nubito在html和pdf中都可以正常显示。我使用WKHTML2PDF来分析bootstrap 3模块,它工作的很好。 – cpugourou

+0

感谢您的尝试,是的,这些示例在大多数常见浏览器中都能正确呈现。尽管我仍无法解释为什么WKHTML正在与这些字体(即Nunito)苦苦挣扎。 – user2191227

+0

确保自定义字体链接在脑海中 – cpugourou

回答

1
  • 使用此相似的效用,通过更多的开发者的支持:https://github.com/plessl/wkpdf
  • 如果不为你工作,检查是否有最新版本的wkhtmltopdf

如果上述方法根本不起作用,您可以尝试不同的命令行实用程序或强大的解决方案l ike:“LaTeX”:https://www.latex-project.org/

+0

我看到WKPDF不再维护。当我尝试安装它时,出现以下错误: 错误:无法在任何存储库中找到有效的gem'wkpdf'(> = 0) 我最好在使用wkhtmlpdf寻找解决方案,因为PDF应该保持完全一样(除了字体的字体)。 – user2191227

+0

嗯..在网上看看,我相信你可以找到它的地方。对不起,您的困难,但我希望这个答案至少有帮助,因为你可以尝试一个不同的实用程序,或LaTeX。 - 请记住标记/投票相应的答案,谢谢 – argon

+0

我会尝试另一个图书馆,如果它与wkhtmltopdf的能力相当。有很多内容处理由wkhtmltopdf完成,而另一个库应该可以采用,恐怕大多数图书馆都会以不同的方式呈现页面。谢谢你的时间,但! – user2191227

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

我花了很多时间在这个同样的问题,试图让多个高谭面临工作一起,并能够解决问题。我发现的是,作为集合一部分的许多TTF/OTF字体在TTF名称表中包含一个名为“首选家族”的字段。该字段的值将是所有字体文件中的通用集合名称,如“Gotham”。因此,实际的“家庭名称”可能是独一无二的,例如“Gotham Book”或“Gotham Light”,但“首选家庭”在所有文件中都是常见的。

FontForge TTF Names

如果你检查的东西,如Linux上的FC-列表中安装的字体,你会看到有一个字体两家人的名字:

Two Family Names

这里存在问题。当在同一PDF中使用同一族中的多个面时,wkhtmltopdf(不知道这是一个webkit还是QT)似乎只选择“首选家族”中的一种字体,并用它来渲染所有应该由该组内的不同字体显示的文本。

幸运的是,您可以完全使用FontForge之类的工具从字体文件中删除“Preferred Family”字段。我这样做是为所有的谭家人,我需要和重新安装它们,从而解决双姓问题的变种:

One family name

这让wkhtmltopdf渲染所有的字体正确面对我的系统上。

+0

很棒的答案 - 非常详细! – user1914292