fpdf使用带有multilcell的表在表行中显示图像

时间:2017-09-30 07:01:23

标签: php fpdf

我无法使用fpdf库显示图像。我将fpdf表与MultiCells脚本[http://www.fpdf.org/?go=script&id=3]一起使用。

我可以通过调用此函数来显示数据

$data = [
  ['A','B','C','image_path'],
  ['A','B','C','image_path'],
  ['A','B','C','image_path'],
];
$pdf->Row($header);
foreach($data as $v) $pdf->Row($v);

它会很好地生成数据。我想用图片替换image_path。如何使用此脚本显示图像?

我的pdf会是这样的。 enter image description here

1 个答案:

答案 0 :(得分:1)

使用Inhertence修改PDF_MC_Table类的Row()函数。

Class Pdf extends PDF_MC_Table{
  protected $imageKey = '';

  public function setImageKey($key){
    $this->imageKey = $key;
  }

  public function Row($data){
    $nb=0;
    for($i=0;$i<count($data);$i++)
      $nb=max($nb,$this->NbLines($this->widths[$i],$data[$i]));
      $h=5*$nb;
      $this->CheckPageBreak($h);
      for($i=0;$i<count($data);$i++){
        $w=$this->widths[$i];
        $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
        $x=$this->GetX();
        $y=$this->GetY();
        $this->Rect($x,$y,$w,$h);

        //modify functions for image 
        if(!empty($this->imageKey) && in_array($i,$this->imageKey)){
          $ih = $h - 0.5;
          $iw = $w - 0.5;
          $ix = $x + 0.25;
          $iy = $y + 0.25;
          $this->MultiCell($w,5,$this->Image ($data[$i],$ix,$iy,$iw,$ih),0,$a);
        }
        else
          $this->MultiCell($w,5,$data[$i],0,$a);
        $this->SetXY($x+$w,$y);
      }
      $this->Ln($h);
    }
  }

}

现在像这样调用这个函数

$data = [
  ['A','B','C','image_path'],
  ['A','B','C','image_path'],
  ['A','B','C','image_path'],
];

$pdf = new Pdf();
$pdf->AddPage();
$pdf->setImageKey = [4];
$pdf->Row($data);