Visualizzazione dei risultati da 1 a 5 su 5

Discussione: fpdf

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518

    fpdf

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    Ho cambiato codice, utilizzando il seguente codice, trovato su questo forum:
    Codice PHP:
    <?php
      
    require("../../../FPDF/fpdf.php");
      
      
    $pdf = new FPDF();
      
    $pdf->AddPage();
      
    $image_path "../../../oldpic.jpg";
      list(
    $width$height)= getimagesize($image_path);
      
      
    $width_mm = ($width/300)*25.4;
      
    $height_mm = ($height/300)*25.4;
      
      
    $x = (210$width_mm)/2;
      
    $pdf->Image($image_path$x0$width_mm$height_mm);
      
    $pdf->Output();
    ?>
    In questo modo l'immagine la inserisce al centro del foglio, io però vorrei che la mia immagine sia inserita in questo modo, vedi prova.jpg

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518
    non mi prende l'immagine comunque, e come se volessi dividere un foglio in 4 quadranti la mia immagine deve stare al centro del quadrante superiore di destra.

  5. #5
    Spesso ho incontrato tantissime difficoltà nel creare file pdf, utilizzando PHP, con dentro immagini.

    Cmq se può esserti utile, io uso dompdf!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.