【问题标题】:Undefined font: In Fpdf. If i set function __construct未定义字体:在 Fpdf 中。如果我设置函数 __construct
【发布时间】:2016-01-07 04:10:16
【问题描述】:

我正在处理 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()。

有人可以帮助我吗?谢谢。

【问题讨论】:

    标签: php class constructor fpdf


    【解决方案1】:

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

    您可以在 bootstrap php 中定义“FPDF_FONTPATH”常量。

    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();
      }
    }
    

    【讨论】:

    • 是的,我知道。但我不能接受这个答案。感谢您的反馈!一旦您总共获得 15 点声望,您的投票将改变公开显示的帖子得分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多