Buongiorno a tutti,
ho la necessità di creare un pdf, sto usando FPDF, devo inserire una immagine al centro di una tabella html.
Il codice è il seguente:
Codice PHP:
<?php
//Based on HTML2PDF by Clément Lavoillotte

require('fpdf.php');

//function hex2dec
//returns an associative array (keys: R,G,B) from
//a hex html code (e.g. #3FE5AA)
function hex2dec($couleur "#000000"){
    
$R substr($couleur12);
    
$rouge hexdec($R);
    
$V substr($couleur32);
    
$vert hexdec($V);
    
$B substr($couleur52);
    
$bleu hexdec($B);
    
$tbl_couleur = array();
    
$tbl_couleur['R']=$rouge;
    
$tbl_couleur['G']=$vert;
    
$tbl_couleur['B']=$bleu;
    return 
$tbl_couleur;
}

//conversion pixel -> millimeter in 72 dpi
function px2mm($px){
    return 
$px*25.4/72;
}

function 
txtentities($html){
    
$trans get_html_translation_table(HTML_ENTITIES);
    
$trans array_flip($trans);
    return 
strtr($html$trans);
}
////////////////////////////////////

class PDF extends FPDF
{
//variables of html parser
var $B;
var 
$I;
var 
$U;
var 
$HREF;
var 
$fontList;
var 
$issetfont;
var 
$issetcolor;

function 
PDF($orientation='P'$unit='mm'$format='A4')
{
    
//Call parent constructor
    
$this->FPDF($orientation,$unit,$format);
    
//Initialization
    
$this->B=0;
    
$this->I=0;
    
$this->U=0;
    
$this->HREF='';

    
$this->tableborder=0;
    
$this->tdbegin=false;
    
$this->tdwidth=0;
    
$this->tdheight=0;
    
$this->tdalign="C";
    
$this->tdbgcolor=false;

    
$this->oldx=0;
    
$this->oldy=0;

    
$this->fontlist=array("arial","times","courier","helvetica","symbol");
    
$this->issetfont=false;
    
$this->issetcolor=false;
}

//////////////////////////////////////
//html parser

function WriteHTML($html)
{
    
$html=strip_tags($html,"[b]<u>[i]<a><img>


[b][i]<font><tr><blockquote><hr><td><tr><table><sup>"
); //remove all unsupported tags
    
$html=str_replace("\n",'',$html); //replace carriage returns by spaces
    
$html=str_replace("\t",'',$html); //replace carriage returns by spaces
    
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); //explodes the string
    
foreach($a as $i=>$e)
    {
        if(
$i%2==0)
        {
            
//Text
            
if($this->HREF)
                
$this->PutLink($this->HREF,$e);
            elseif(
$this->tdbegin) {
                if(
trim($e)!='' && $e!="") {
                    
$this->Cell($this->tdwidth,$this->tdheight,$e,$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
                }
                elseif(
$e=="") {
                    
$this->Cell($this->tdwidth,$this->tdheight,'',$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
                }
            }
            else
                
$this->Write(5,stripslashes(txtentities($e)));
        }
        else
        {
            
//Tag
            
if($e[0]=='/')
                
$this->CloseTag(strtoupper(substr($e,1)));
            else
            {
                
//Extract attributes
                
$a2=explode(' ',$e);
                
$tag=strtoupper(array_shift($a2));
                
$attr=array();
                foreach(
$a2 as $v)
                {
                    if(
preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                        
$attr[strtoupper($a3[1])]=$a3[2];
                }
                
$this->OpenTag($tag,$attr);
            }
        }
    }
}

function 
OpenTag($tag$attr)
{
    
//Opening tag
    
switch($tag){

        case 
'SUP':
            if( !empty(
$attr['SUP']) ) {    
                
//Set current font to 6pt     
                
$this->SetFont('','',6);
                
//Start 125cm plus width of cell to the right of left margin         
                //Superscript "1" 
                
$this->Cell(2,2,$attr['SUP'],0,0,'C');
            }
            break;

        case 
'TABLE'// TABLE-BEGIN
            
if( !empty($attr['BORDER']) ) $this->tableborder=$attr['BORDER'];
            else 
$this->tableborder=0;
            break;
        case 
'TR'//TR-BEGIN
            
break;
        case 
'TD'// TD-BEGIN
            
if( !empty($attr['WIDTH']) ) $this->tdwidth=($attr['WIDTH']/4);
            else 
$this->tdwidth=40// Set to your own width if you need bigger fixed cells
            
if( !empty($attr['HEIGHT']) ) $this->tdheight=($attr['HEIGHT']/6);
            else 
$this->tdheight=6// Set to your own height if you need bigger fixed cells
            
if( !empty($attr['ALIGN']) ) {
                
$align=$attr['ALIGN'];        
                if(
$align=='LEFT'$this->tdalign='L';
                if(
$align=='CENTER'$this->tdalign='C';
                if(
$align=='RIGHT'$this->tdalign='R';
            }
            else 
$this->tdalign='C'// Set to your own
            
if( !empty($attr['BGCOLOR']) ) {
                
$coul=hex2dec($attr['BGCOLOR']);
                    
$this->SetFillColor($coul['R'],$coul['G'],$coul['B']);
                    
$this->tdbgcolor=true;
                }
            
$this->tdbegin=true;
            break;

        case 
'HR':
            if( !empty(
$attr['WIDTH']) )
                
$Width $attr['WIDTH'];
            else
                
$Width $this->$this->lMargin-$this->rMargin;
            
$x $this->GetX();
            
$y $this->GetY();
            
$this->SetLineWidth(0.2);
            
$this->Line($x,$y,$x+$Width,$y);
            
$this->SetLineWidth(0.2);
            
$this->Ln(1);
            break;
        case 
'STRONG':
            
$this->SetStyle('B',true);
            break;
        case 
'EM':
            
$this->SetStyle('I',true);
            break;
        case 
'B':
        case 
'I':
        case 
'U':
            
$this->SetStyle($tag,true);
            break;
        case 
'A':
            
$this->HREF=$attr['HREF'];
            break;
        case 
'IMG':
            if(isset(
$attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) {
                if(!isset(
$attr['WIDTH']))
                    
$attr['WIDTH'] = 0;
                if(!isset(
$attr['HEIGHT']))
                    
$attr['HEIGHT'] = 0;
                
$this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT']));
            }
            break;
        case 
'BLOCKQUOTE':
        case 
'BR':
            
$this->Ln(5);
            break;
        case 
'P':
            
$this->Ln(10);
            break;
        case 
'FONT':
            if (isset(
$attr['COLOR']) && $attr['COLOR']!='') {
                
$coul=hex2dec($attr['COLOR']);
                
$this->SetTextColor($coul['R'],$coul['G'],$coul['B']);
                
$this->issetcolor=true;
            }
            if (isset(
$attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) {
                
$this->SetFont(strtolower($attr['FACE']));
                
$this->issetfont=true;
            }
            if (isset(
$attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist) && isset($attr['SIZE']) && $attr['SIZE']!='') {
                
$this->SetFont(strtolower($attr['FACE']),'',$attr['SIZE']);
                
$this->issetfont=true;
            }
            break;
    }
}

function 
CloseTag($tag)
{
    
//Closing tag
    
if($tag=='SUP') {
    }

    if(
$tag=='TD') { // TD-END
        
$this->tdbegin=false;
        
$this->tdwidth=0;
        
$this->tdheight=0;
        
$this->tdalign="C";
        
$this->tdbgcolor=false;
    }
    if(
$tag=='TR') { // TR-END
        
$this->Ln();
    }
    if(
$tag=='TABLE') { // TABLE-END
        //$this->Ln();
        
$this->tableborder=0;
    }

    if(
$tag=='STRONG')
        
$tag='B';
    if(
$tag=='EM')
        
$tag='I';
    if(
$tag=='B' || $tag=='I' || $tag=='U')
        
$this->SetStyle($tag,false);
    if(
$tag=='A')
        
$this->HREF='';
    if(
$tag=='FONT'){
        if (
$this->issetcolor==true) {
            
$this->SetTextColor(0);
        }
        if (
$this->issetfont) {
            
$this->SetFont('arial');
            
$this->issetfont=false;
        }
    }
}

function 
SetStyle($tag$enable)
{
    
//Modify style and select corresponding font
    
$this->$tag+=($enable : -1);
    
$style='';
    foreach(array(
'B','I','U') as $s) {
        if(
$this->$s>0)
            
$style.=$s;
    }
    
$this->SetFont('',$style);
}

function 
PutLink($URL$txt)
{
    
//Put a hyperlink
    
$this->SetTextColor(0,0,255);
    
$this->SetStyle('U',true);
    
$this->Write(5,$txt,$URL);
    
$this->SetStyle('U',false);
    
$this->SetTextColor(0);
}

}
//end of class

?>
Codice PHP:
<?php
require('html_table.php');

$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);

$html='<table border="1" align="center">
<tr>
<td width="400" height="30" bgcolor="#cc0000" align="center">cell</td>
</tr>
<tr>
<td width="400" height="30" align="center">[img]logo.jpg[/img]</td>
</tr>
</table>'
;

$pdf->WriteHTML($html);
$pdf->Output();
?>

Il codice funziona, solamente che il testo viene allineato al centro mentre il logo rimane a sinistra.