使用WKHTMLTOPDF库生成PDF时,自定义字体无法工作

5
我正在使用 Laravel 5.1 的 SnappyPDF 封装,它使用 WKHTMLTOPDF 库。我尝试为我的 PDF 文件包含一些自定义的 Google 字体,但这些字体在生成的 PDF 文件中无法工作。
我尝试将字体转换为 Base64,并尝试通过绝对 URL 和相对 URL 包含字体,还尝试了许多 Stack Overflow 上可用的答案,但都没有解决我的问题。如何解决这个问题。
//Calling fonts
@font-face {
    font-family: Roboto Condensed;
    src: url("/fonts/RobotoCondensed-Regular/RobotoCondensed-Regular.ttf");
}
@font-face {
    font-family: 'Open Sans';src: url("/fonts/OpenSans/OpenSans-Regular.ttf");
}

@font-face {
    font-family: 'Open Sans Semi Bold Italic';
    src: url("/fonts/OpenSans/OpenSans-SemiboldItalic.ttf");
}

 //implenting fonts
.report-page2-col-wrapper .col-heading{
    font-family:"Open Sans Semi Bold Italic";
    font-size:12pt;
    line-height:17pt;
}

请看屏幕截图的区别。
1)这是网页浏览器HTML版本,外观良好,字体实现正确。

enter image description here

2)这是生成的PDF版本,字体未正确应用。

enter image description here

2个回答

8

有多种解决方案可以实现这个目标:

1) 如果您使用的是 Google 字体,请尝试以下方法: 使用<link>标签来包含 Google 字体。

<link href='http://fonts.googleapis.com/css?family=YOURFONTFAMILY' rel='stylesheet' type='text/css'>

使用<style>来应用字体效果。
<style type = "text/css">
    p { font-family: 'YOURFONTFAMILY'; }
</style>

2) 使用Base64编码工具对字体进行编码,并在css中使用它。

@font-face {
    font-family: 'YOURFONTFAMILY';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}

希望上述内容之一是你的解决方案!引用自:如何在wkhtmltopdf中使用自定义字体wkhtmltopdf中Helvetica字体无法正常工作

很高兴能帮助你...! - AddWeb Solution Pvt Ltd
3
如果您没有使用谷歌字体,采用 Base64 方法可能无法成功。 - Bobe
方法二对我有用,谢谢。 - Masoud

0
除了AddWeb之外,您还需要在HTML头部添加带有Unicode信息的META。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接