Changeset 5824 in spip-zone


Ignore:
Timestamp:
Oct 1, 2006, 7:58:40 PM (15 years ago)
Author:
cedric@…
Message:

gestion des retour ligne dans les textarea, et meilleure prise en compte des espaces separes par des tags

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_test_/article_pdf/pdf/lib_pdf_global.php

    r5819 r5824  
    4444
    4545var $FirstIteration = TRUE;  # booleen pour la génération des liens
     46var $CurrentTag=array();
    4647
    4748
     
    102103        $this->texteAddSpace=false;
    103104        //Parseur HTML
    104 //      $html=str_replace("\n",' ',$html); non, sinon plus de retour à la ligne dans les textearea
    105105        $html=$this->unhtmlentities($html);
    106106       
    107         $a=preg_split('/(?m)(<(?!=).*>(?!=))/U', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
     107        $a=preg_split(',(<[/a-zA-Z].*>),Ums', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
    108108        //autoriser le multiligne
    109109  //Il faut détecter les vraies balises <... et pas les <= de formules éventuelles
    110         // dans le texte , idem en fermeture, écarter les >= d'où l'ajout des (?!=)
    111110
    112111        // $a = le tableau de tags
     
    132131                // Contenu
    133132                else {
    134                 if (strlen($e)){
    135                                 $this->texteAddSpace = $this->texteAddSpace OR $e{0}==" ";
    136                                 $next_add_space = substr($e,-1)==" ";
    137                                 $e = trim($e);
     133                        if (!in_array('TEXTAREA',$this->CurrentTag))
     134                                $e=str_replace("\n",' ',$e);
     135                        if (strlen($e)){
     136                                $te = trim($e);
     137                                if (!$this->texteAddSpace)
     138                                        $this->texteAddSpace = (strlen($te)==0) | ($e{0}!=$te{0});
     139                                $next_add_space = (strlen($te)==0) | (substr($e,-1)!=substr($te,-1));
     140                                $e = $te;
    138141                        }
    139142                        if(strlen($e)){
     
    222225function OpenTag($tag,$e,$LineFeedHeight)
    223226{
    224   //Balise ouvrante
     227        $needclosing = true;   
     228        //Balise ouvrante
    225229        if ($tag=='B' || $tag=='U' || $tag=='I')
    226230        {
     
    247251                }
    248252        }
    249 
    250253        if($tag=='BR') {
    251254                $this->maxLineWidth = max($this->maxLineWidth,$this->x);
    252255                $this->Ln($LineFeedHeight);
     256                $needclosing = false;
     257                $this->texteAddSpace = false;
    253258        }
    254259
     
    256261                $this->maxLineWidth = max($this->maxLineWidth,$this->x);
    257262                $this->Ln(1.5*$LineFeedHeight);
     263                $this->texteAddSpace = false;
     264        }
     265        if($tag=='DIV') {
     266                $this->maxLineWidth = max($this->maxLineWidth,$this->x);
     267                $this->Ln(1*$LineFeedHeight);
     268                $this->texteAddSpace = false;
    258269        }
    259270
     
    267278                $this->Ln($LineFeedHeight*3);
    268279                $this->SetStyle($tag='B',true,14);
     280                $this->texteAddSpace = false;
    269281        }
    270282
     
    303315                }
    304316                else
    305     {
     317                {
    306318                        $size=getimagesize($this->SRC);         # Attention, utilisation de GD !!! FPDF ne sait pas lire les images à moitié... et je n'ai pas envie de surcharger la méthode Image...
    307319                        if ($size[0] < 30 && $size[1] < 30) {
     
    358370                                $this->SetY($this->GetY()+$imgY);
    359371                        }
    360     }
     372                }
    361373        }
    362374
     
    438450                $this->SetLineWidth(0.3);
    439451                $this->Line($this->lMargin, $this->GetY(), $this->w - $this->rMargin, $this->GetY());
    440         }
     452                $needclosing = false;
     453                $this->texteAddSpace = false;
     454        }
     455        if ((substr($e,-2)!="/>") && $needclosing)
     456                $this->CurrentTag[]=$tag;       
    441457}
    442458
    443459function CloseTag($tag,$LineFeedHeight)
    444460{
     461        if ($tag==end($this->CurrentTag))
     462                array_pop($this->CurrentTag);
     463               
    445464        if($tag=='B' || $tag=='U' || $tag=='I')
    446465                $this->SetStyle($tag,false);
     
    676695                }
    677696                // Repris de CalcWidth : calcul de la largeur de la table
    678     $TableWidth=0.0;
     697                $TableWidth=0.0;
    679698                foreach($this->columnProp as $col) {
    680699                        $TableWidth += $col['w'];
     
    739758        @unlink(DUMP_FILE_FULL_PATH_NAME);
    740759}
    741        
    742        
     760
     761
    743762// trace une chaîne dans un fichier
    744763function Dump($String)
     
    751770    }
    752771}
    753        
     772
    754773// trace un tableau dans un fichier
    755774function DumpArray($String,$Array)
Note: See TracChangeset for help on using the changeset viewer.