FPDF:不同的 header 徽标

FPDF: different header logo

我使用 PHP 中的 FPDF Class 创建 PDF。一切正常,但现在我需要 header.

中带有不同徽标的 PDF

创建 header 效果很好。

class PDF extends FPDF {
  function Footer() {
    // some code
  }

  function Header() {
    $this->Image('PDF/images/pdf_header.png', 0, 0, 215);
  }
}

现在我需要这样的东西。我的文件中存在变量“$is_summer”。

class PDF extends FPDF {
  function Footer() {
    // some code
  }

  function Header() {
    if ($is_summer)
      $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
    } else {
      $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
    }
  }
}

但我得到:通知:未定义的变量:is_summer in createPDFpriv.php on line 200.

好的,未定义变量。所以我尝试了

function Header($is_summer) {
  if ($is_summer)
    $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
  } else {
    $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
  }
}

另一个错误:警告:PDF::Header($is_summer) 的声明应与在线 createPDFpriv.php 中的 FPDF::Header() 兼容145

也尝试过:

 if ($is_summer) {
   function Header() {
     $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
   }
 } else {
   function Header() {
     $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
   }
 }

又报错:parse error: syntax error, unexpected 'if' (T_IF), expecting function (T_FUNCTION) in createPDFpriv.php on第 199 行。好的,应该有功能,这个不行

有人能帮忙吗?

你可以这样解决:

class PDF extends FPDF {
  public  $is_summer;
  function Footer() {
    // some code
  }

  function Header() {
    if ($this->is_summer)
      $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
    } else {
      $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
    }
  }
}

所以你要做的是当你制作 PDF 对象时,你将 is_summer 属性 设置为 true 或 false,它就可以使用那个 属性 在你的 Header 函数中。

为此,您可以创建一个构造函数,如下所示:

class PDF extends FPDF {
  public  $is_summer;
  function __construct($is_summer){
    $this->is_summer = $is_summer;
  }
  function Footer() {
    // some code
  }

  function Header() {
    if ($this->is_summer)
      $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
    } else {
      $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
    }
  }
}

也许您忘记了“is_summer”之前的“$this”?你可以试试这个:

class PDF extends FPDF{

 private $isSummer = false;
 function __construct($summer) {
  parent::__construct();
  $this->isSummer = $summer;
  print "In BaseClass constructor\n";
 }

 function Header() {
  if ($this->isSummer) {
   $this->Image('PDF/images/pdf_header_summer.png', 0, 0, 215);
  } else {
   $this->Image('PDF/images/pdf_header_winter.png', 0, 0, 215);
  }
 }
}

使用时:

$mysummer = true; // or false
$mypdf = new PDF($mysummer);