未定义的字体:在Fpdf中。如果我设置函数__construct

时间:2016-01-07 04:10:16

标签: php class constructor fpdf

我正在制作PDF发票。 只有在类中设置Constructor时才会找到字体。

这是我的班级:

<?php require('fpdf.php');

class Invoice extends FPDF
{
    /**
     * Database
     *
     * @access private 
     */     
    private $db;

    /**
     * Constructor
     * 
     * @access public 
     */   
    public function __construct() {             
        $this->db = new Database();             
    }
    //The rest of the code
}
?>

同样parent::FPDF();在构造函数中也不起作用。

  

致命错误:调用未定义的方法FPDF :: FPDF()。

有人能帮助我吗?感谢。

1 个答案:

答案 0 :(得分:4)

如果从FPDF扩展并且如果要覆盖构造函数,则必须调用具有预期签名的父构造函数。

您可以定义&#39; FPDF_FONTPATH&#39;在bootstrap php中保持不变。

FPDF具有以下构造函数签名

function __construct($orientation='P', $unit='mm', $size='A4') 
{
  //line 106 to 117 has following font path initialization
  // Font path
  if(defined('FPDF_FONTPATH'))
  {
    $this->fontpath = FPDF_FONTPATH;
      if(substr($this->fontpath,-1)!='/' && substr($this->fontpath,-1)!='\\')
        $this->fontpath .= '/';
  }
  elseif(is_dir(dirname(__FILE__).'/font'))
    $this->fontpath = dirname(__FILE__).'/font/';
  else
    $this->fontpath = '';
  // Core fonts

...
}

尝试以下内容

define('FPDF_FONTPATH','change/to/fpdf/font/path');

class Invoice extends FPDF
{   
  private $db;

  public function __construct()
  {
    parent::__construct('P', 'mm', 'A4');
    $this->db = new Database();
  }
}