alien alien - 3 years ago 152
PHP Question

fpdf display image in table row using table with multilcell

I am having trouble displaying image using fpdf library. I use fpdf Table with MultiCells scripts [http://www.fpdf.org/?go=script&id=3 ].

I can display data by calling this function

$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);


It will generate data nicely. I want to replace
image_path
with image . How can I display image using this script?

My pdf will be look like this.
enter image description here

Answer Source

Modify PDF_MC_Table class Row() functions by using Inhertence.

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

}

Now call this function like this

$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);
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download