代码之家  ›  专栏  ›  技术社区  ›  Qazi masuduzzaman

使用WKHTMLTOPDF库生成的PDF中无法使用自定义字体

  •  5
  • Qazi masuduzzaman  · 技术社区  · 8 年前

    我正在使用Laravel 5.1 SnappyPDF包装器,它正在使用 WKHTMLTOPDF 图书馆我试图在PDF文件中包含一些自定义的谷歌字体,但这些字体在生成的PDF文件中不起作用。

    我试着把字体转换成 Base64 还尝试通过绝对URL和相对URL包含字体,也尝试了堆栈溢出时的许多答案,但没有一个对我有效。如何修复此问题。

    //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
  •  8
  •   Community nesinervink    7 年前

    有多种解决方案可以实现这一点:

    1) 如果您使用谷歌字体,请尝试以下操作: 使用 <link> 包括谷歌字体

    <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 encode tool

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

    希望以上其中一个是您的解决方案!

    作为参考: use custom fonts with wkhtmltopdf , helvetica font not working in wkhtmltopdf

        2
  •  0
  •   Max Shishkov    4 年前

    除了AddWeb,您还必须向HTML头元添加unicode信息

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">