@ font-face或自定义字体在PHP pdf生成器类中不起作用

时间:2016-04-08 10:38:29

标签: php css pdf fonts dompdf

我正在使用dompdf从输入生成PDF。 我使用的代码:

require_once (STYLESHEETPATH.'/dompdf/include/autoload.inc.php');
set_include_path(STYLESHEETPATH.'/dompdf');

require_once STYLESHEETPATH.'/dompdf/dompdf_config.inc.php';

$dompdf = new DOMPDF();

$html = '
<html>
 <body>
  <h1>Hello <i>'. $fullname.'</i> </h1>
  <p> your father is <b>'.$fathername.'</b>
 </body>
</html>';

$dompdf->load_html($html);
$dompdf->render();

$dompdf->stream("tck.pdf"); ?>

这非常正常,并生成一个名为tck.pdf

的pdf

现在我想在pdf中设置字体样式,所以我试过

require_once (STYLESHEETPATH.'/dompdf/include/autoload.inc.php');
set_include_path(STYLESHEETPATH.'/dompdf');

require_once STYLESHEETPATH.'/dompdf/dompdf_config.inc.php';

$dompdf = new DOMPDF();

$html = '
<html>
    <head>
        <style>
            @font-face {
              font-family: "Open Sans";
              font-style: normal;
              font-weight: 400;
              src: url(http://themes.googleusercontent.com/static/fonts/opensans/v8/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format("truetype");
            }
        </style>
    </head>
 <body>
  <h1>Hello <i>'. $fullname.'</i> </h1>
  <p> your father is <b>'.$fathername.'</b>
 <br/>
  <span style="font-family:webfontregular;">bar code will be here</span>
    <div style="font-family:"Open Sans";">Open Sans</div>
 </body>
</html>';

$dompdf->load_html($html);
$dompdf->render();

$dompdf->stream("tck.pdf"); ?>

但它不起作用并给出如下错误:

Fatal error: Class 'Font' not found in /home4/q0i4l0g2/public_html/tck/wp-content/themes/kallyas-child/dompdf/include/font_metrics.cls.php on line 356

我注意到每当我使用“@ font-face”时,我都会收到此错误。 这是为什么? 我怎样才能使它发挥作用?

根据这个问题Dompdf and set different font-family中接受的答案,我认为这应该有用,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

使用0.7.0之前的dompdf版本时,不应直接包含自动装带器。这是在包含dompdf_config.inc.php文件时执行的设置过程的一部分。该设置过程定义了dompdf使用的一些常量,并引用了dompdf的自动加载器,并使用了各种库(包括php-font-lib)。

如果dompdf类已经可用,则启动脚本将退出而不执行任何操作。

也可能与你如何得到dompdf有关。如果您没有下载打包版本(即您单独下载了各个库),请确保获取php-font-lib 0.3.x,即dompdf 0.6版本使用的版本。