Cookdojo Home > Mc Table.php

Questions? Need Help? Want to share? » PHP Forum
Script Name:
Cookdojo Home

Download:
cookdojo-home.zip

Category:
Organizers

Archive Content:

Docs

Font

Images > Button

Images

Include

Lib

Style

Content:

Mc Table.php:


<?php
require('fpdf.php');

class 
PDF_MC_Table extends FPDF
{
    
    var 
$report_tanggal;
    var 
$report_nomor;
    
    function 
Header()
    {
        
$this->SetTextColor(0, 0, 0);
            
$this->SetFont('Arial',  'B',  6);
            
$this->Image ("images/logo_white.jpg",  163,  10,  30, '',  '', 'http://www.cookdojo.com');
    
    }
    
    function 
Footer()
    {
        
$this->SetTextColor(0, 0, 0);
        
$this->SetY(-15);
        
$this->SetFont('Arial', 'I', 8);
        
$this->Cell(0, 10, 'Page '.$this->PageNo().'/{nb}', 0, 0, 'C');
        
$this->Cell(0, 10, date("Y-m-d h:m:s"), 0, 0, 'C');
    }

    var 
$widths;
    
    function 
SetWidths($w)
    {
        
//Set the array of column widths
        
$this->widths=$w;
    }
    
    function 
Row($data)
    {
        
//Calculate the height of the row
        
$nb=0;
        for(
$i=0;$i<count($data);$i++)
            
$nb=max($nb,  $this->NbLines($this->widths[$i],  $data[$i]));
        
$h=5*$nb;
        
//Issue a page break first if needed
        
$this->CheckPageBreak($h);
        
//Draw the cells of the row
        
for($i=0;$i<count($data);$i++)
        {
            
$w=$this->widths[$i];
            
//Save the current position
            
$x=$this->GetX();
            
$y=$this->GetY();
            
//Draw the border
            
$this->Rect($x,  $y,  $w,  $h);
            
//Print the text
            
$this->MultiCell($w,  5,  $data[$i],  0,  'L');
            
//Put the position to the right of the cell
            
$this->SetXY($x+$w,  $y);
        }
        
//Go to the next line
        
$this->Ln($h);
    }
    
    function 
CheckPageBreak($h)
    {
        
//If the height h would cause an overflow,  add a new page immediately
        
if($this->GetY()+$h>$this->PageBreakTrigger)
            
$this->AddPage($this->CurOrientation);
    }
    
    function 
NbLines($w,  $txt)
    {
        
//Computes the number of lines a MultiCell of width w will take
        
$cw=&$this->CurrentFont['cw'];
        if(
$w==0)
            
$w=$this->w-$this->rMargin-$this->x;
        
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
        
$s=str_replace("\r",  '',  $txt);
        
$nb=strlen($s);
        if(
$nb>and $s[$nb-1]=="\n")
            
$nb--;
        
$sep=-1;
        
$i=0;
        
$j=0;
        
$l=0;
        
$nl=1;
        while(
$i<$nb)
        {
            
$c=$s[$i];
            if(
$c=="\n")
            {
                
$i++;
                
$sep=-1;
                
$j=$i;
                
$l=0;
                
$nl++;
                continue;
            }
            if(
$c==' ')
                
$sep=$i;
            
$l+=$cw[$c];
            if(
$l>$wmax)
            {
                if(
$sep==-1)
                {
                    if(
$i==$j)
                        
$i++;
                }
                else
                    
$i=$sep+1;
                
$sep=-1;
                
$j=$i;
                
$l=0;
                
$nl++;
            }
            else
                
$i++;
        }
        return 
$nl;
    }
}
?>


Other Organizers Scripts:

  • Cookdojo Home
  • Mdb
WebMaster Resources Home

©RingsWorld.com