Source for file idd_pdf.php
Documentation is available at idd_pdf.php 
 * @author linea21 <info@linea21.com>  
 * @license http://opensource.org/licenses/gpl-3.0.html  
  // //////////////////////////////////  
  // formattage titres item & info  
  // //////////////////////////////////  
    $this->MultiCell(0,DOC_HEIGHT+ 1,$libelle,0,'L',1);  
  // //////////////////////////////////  
  // gestion header & footer  
  // //////////////////////////////////  
    $content =  $report_settings['author'];  
    if(!empty($report_settings['mail_author']))  {  
      $content .=  ' ('. $report_settings['mail_author']. ')';  
      $mailto= 'mailto:'. $report_settings['mail_author'];  
    $content_comp=  !empty($report_settings['service_author']) ?  ' -- '. $report_settings['service_author'] :  '';  
    $content_comp.=  !empty($report_settings['adress_author']) ?  ' -- '. $report_settings['adress_author'] :  '';  
    $this->Line($this->GetX(), $this->GetY(), $this->GetX()+ 190, $this->GetY());  
    $this->Cell($this->GetStringWidth($content), 4, $content, 0, 0, 'L', 0, $mailto);  
    $this->Cell(0, 4, $content_comp, 0, 0, 'L');  
    // Numéro et nombre de pages  
    $this->Cell(0, 4, $lang['divers']['page']. ' ' .  $this->PageNo() .  '/{nb}', 0, 0, 'R');  
    $content =  formatText($report_settings['title']) . ' - '.  SITE_NAME;  
    //$this->Cell(0, 4, $lang['statut']['published_on'].' '. $today, 0, 0, 'L');  
    $this->Cell(0, 4, $today, 0, 0, 'L');  
    $this->Cell(0, 4, $content, 0, 1, 'R');  
    $this->Line($this->GetX(), $this->GetY(), $this->GetX()+ 190, $this->GetY());  
    //$this->Image('inc_report/logo_p.png', $this->GetX(), $this->GetY());  
  // //////////////////////////////////  
  // gestion dynamique des couleurs  
  // //////////////////////////////////  
  * @param string $type 'TRACE' | 'FONT' | 'BCKG'  
  function SetColor($ink =  'DOC_COLOR', $type =  'FONT')  
        $this->SetTextColor($r, $g, $b);  
        $this->SetDrawColor($r, $g, $b);  
        $this->SetFillColor($r, $g, $b);  
  // //////////////////////////////////  
  // //////////////////////////////////  
  function Bookmark($txt, $level =  0, $y =  0)  
    $this->outlines[] =  array('t' =>  $txt, 'l' =>  $level, 'y' =>  $y, 'p' =>  $this->PageNo());  
        $parent =  $lru[$o['l']- 1];  
        // Set parent and last pointers  
        $this->outlines[$i]['parent'] =  $parent;  
          // Level increasing: set first pointer  
      if ($o['l'] <=  $level and $i >  0) {  
        // Set prev and next pointers  
      $this->_out('<</Title ' .  $this->_textstring($o['t']));  
      //$this->_out('<</Title ' . $this->_escapetext($o['t']));  
      $this->_out('/Parent ' .  ($n +  $o['parent']) .  ' 0 R');  
      $this->_out('/Prev ' .  ($n +  $o['prev']) .  ' 0 R');  
      $this->_out('/Next ' .  ($n +  $o['next']) .  ' 0 R');  
      $this->_out('/First ' .  ($n +  $o['first']) .  ' 0 R');  
      $this->_out('/Last ' .  ($n +  $o['last']) .  ' 0 R');  
      $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]', 1 +  2 *  $o['p'], ($this->h -  $o['y']) *  $this->k));  
      $this->_out('/Count 0>>');  
    $this->_out('<</Type /Outlines /First ' .  $n .  ' 0 R');  
    $this->_out('/Last ' .  ($n +  $lru[0]) .  ' 0 R>>');  
      $this->_out('/Outlines ' .  $this->OutlineRoot .  ' 0 R');  
      $this->_out('/PageMode /UseOutlines');  
  // //////////////////////////////////  
  // //////////////////////////////////  
    $this->Cell(0, DOC_HEIGHT, $lang['dashboard']['rap_summary'], 0, 2, 'C');  
    $size= sizeof($this->outlines)- 1; // -1 pour supprimer le bookmark de l'index  
    $PageCellSize= $this->GetStringWidth('p. '. $this->outlines[$size- 1]['p'])+ 2;  
    for ($i= 0;$i< $size;$i++ ){  
        $strsize= $this->GetStringWidth($str);  
        $avail_size= $this->w- $this->lMargin- $this->rMargin- $PageCellSize- ($level* 8)- 4;  
        while ($strsize>= $avail_size){  
          $strsize= $this->GetStringWidth($str);  
        $this->Cell($strsize+ 2,$this->FontSize+ 2,$str, 0, 0, 'L', 0, $link);  
        $w= $this->w- $this->lMargin- $this->rMargin- $PageCellSize- ($level* 8)- ($strsize+ 2);  
        $nb= $w/ $this->GetStringWidth('.');  
        $this->Cell($w,$this->FontSize+ 2,$dots,0,0,'R');  
        $this->Cell($PageCellSize,$this->FontSize+ 2,'p. '. $this->outlines[$i]['p'],0,1,'R');  
  // //////////////////////////////////  
  // Tableau avec multicells  
  // //////////////////////////////////  
    // Tableau des largeurs de colonnes  
    // Tableau des alignements de colonnes  
    // Calcule la hauteur de la ligne  
    for($i =  0;$i <  count($data);$i++ )  
    // Effectue un saut de page si nécessaire  
    for($i =  0;$i <  count($data);$i++ ) {  
      // Sauve la position courante  
      $this->Rect($x, $y, $w, $h);  
      $this->MultiCell($w, 5, $data[$i], 0, $a);  
      $this->SetXY($x +  $w, $y);  
    // Si la hauteur h provoque un d�bordement, saut de page manuel  
    if ($this->GetY() +  $h >  $this->PageBreakTrigger)  
    $this->AddPage($this->CurOrientation);  
    // Calcule le nombre de lignes qu'occupe un MultiCell de largeur w  
    $cw =  &$this->CurrentFont['cw'];  
    $w =  $this->w -  $this->rMargin -  $this->x;  
    $wmax =  ($w- 2 *  $this->cMargin) *  1000 /  $this->FontSize;  
    if ($nb >  0 and $s[$nb- 1] ==  "\n")  
  // //////////////////////////////////  
  // import d'image en memoire  
  // //////////////////////////////////  
  function MEM_IMAGE($orientation =  'P', $unit =  'mm', $format =  'A4')  
    $this->FPDF($orientation, $unit, $format);  
    // Register var stream protocol (requires PHP>=4.3.2)  
    // Read some bytes from string  
    $string =  substr($var, $pos, $n);  
    // Read a 4-byte integer from string  
    $this->Error('Not a PNG image');  
    $this->Error('Incorrect PNG Image');  
    $this->Error('16-bit depth not supported: ' .  $file);  
    $colspace =  'DeviceGray';  
    $this->Error('Alpha channel not supported: ' .  $file);  
    $this->Error('Unknown compression method: ' .  $file);  
    $this->Error('Unknown filter method: ' .  $file);  
    $this->Error('Interlacing not supported: ' .  $file);  
    $parms =  '/DecodeParms <</Predictor 15 /Colors ' .  ($ct ==  2 ?  3 :  1) .  ' /BitsPerComponent ' .  $bpc .  ' /Columns ' .  $w .  '>>';  
    // Scan chunks looking for palette, transparency and image data  
      } elseif ($type ==  'tRNS') {  
        // Read transparency info  
      } elseif ($type ==  'IDAT') {  
        $data .=  $this->_readstr($var, $pos, $n);  
      } elseif ($type ==  'IEND')  
    if ($colspace ==  'Indexed' and empty($pal))  
    $this->Error('Missing palette in ' .  $file);  
  function MemImage($data, $x, $y, $w =  0, $h =  0, $link =  '')  
    // Put the PNG image stored in $data  
    if (!isset ($this->images[$id])) {  
      $info['i'] =  count($this->images) +  1;  
      $this->images[$id] =  $info;  
    $info =  $this->images[$id];  
    // Automatic width and height calculation if needed  
    if ($w ==  0 and $h ==  0) {  
      $w =  $info['w'] /  $this->k;  
      $h =  $info['h'] /  $this->k;  
    $w =  $h *  $info['w'] /  $info['h'];  
    $h =  $w *  $info['h'] /  $info['w'];  
    $this->_out(sprintf('q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q', $w *  $this->k, $h *  $this->k, $x *  $this->k, ($this->h -  ($y +  $h)) *  $this->k, $info['i']));  
    $this->Link($x, $y, $w, $h, $link);  
 
 
        
       |