begin process at 2012 05 31 00:41:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

générer un pdf à partir de code HTML


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

générer un pdf à partir de code HTML

mardi 6 décembre 2005 à 15:37:02 | générer un pdf à partir de code HTML

putch

Voila mon souci, je suis en train de faire une fonction qui génére un fichier pdf à partir de code HTML passé en paramètre :

function pdf($html) {
...
}


j'utilise la classe FPDF mais par contre je ne sais par où débuter pour transformer le contenu de $html en du texte affichable dans un pdf.

$html contient entre autres balises de passage à la ligne, tableau, ..., et ca je ne sait pas trop comment m'en occuper ...

merci de votre aide :)

mardi 6 décembre 2005 à 16:07:00 | Re : générer un pdf à partir de code HTML

tweeder

Je t'invite à consulter le tutoriel sur http://www.fpdf.org/

Jonathan
mardi 6 décembre 2005 à 16:17:09 | Re : générer un pdf à partir de code HTML

djagger

Ouep exact, FPDF a sa propre syntaxe !
ex :
    $pdf->SetFont('Arial','B',16);
    $pdf->Image("monImage.jpg",12,10,24.4,16);
    $pdf->Cell(0,16,"Voici le texte",1,2,'C');
    $pdf->SetFont('Arial','BU',12);
    etc ....

tu ne pourras donc pas directement mettre ton code HTML, va falloir tout reformatter !
allé a+++

mardi 6 décembre 2005 à 16:54:26 | Re : générer un pdf à partir de code HTML

putch

c'est la justement que je bloque !

j'en suis à la lecture des balises et donc
qu'est ce que je dois faire si c'est un TABLE, un TR ou un TD et de meme pour les fins de ses balises ...
        function OpenTag($tag,$attr)
        {
            //Balise ouvrante
            if($tag=='B' or $tag=='I' or $tag=='U')
                $this->SetStyle($tag,true);
            if($tag=='A')
                $this->HREF=$attr['HREF'];
            if($tag=='BR')
                $this->Ln(4);
            if($tag=='IMG')
                $this->PutLink($attr['SRC'],'[ Image ]');
            if($tag=='FONT')
            {
                switch(strtolower($attr['COLOR']))
                {
                    case "red":            $this->SetTextColor(255,0,0); break;
                    case "darkred":        $this->SetTextColor(139,0,0); break;
                    case "orange":        $this->SetTextColor(255,165,0); break;
                    case "brown":        $this->SetTextColor(165,42,42); break;
                    case "yellow":        $this->SetTextColor(255,255,0); break;
                    case "green":        $this->SetTextColor(0,128,0); break;
                    case "olive":        $this->SetTextColor(128,128,0); break;
                    case "cyan":        $this->SetTextColor(0,255,255); break;
                    case "blue":        $this->SetTextColor(0,0,255); break;
                    case "darkblue":    $this->SetTextColor(0,0,139); break;
                    case "indigo":        $this->SetTextColor(75,0,130); break;
                    case "violet":        $this->SetTextColor(238,130,238); break;
                    case "white":        $this->SetTextColor(0,0,0); break;
                    case "black":        $this->SetTextColor(0,0,0); break;
                    case "cadetblue":    $this->SetTextColor(95,158,160); break;
                    case "coral":        $this->SetTextColor(255,127,80); break;
                    case "crimson":        $this->SetTextColor(220,20,60); break;
                    case "tomato":        $this->SetTextColor(255,99,71); break;
                    case "seagreen":    $this->SetTextColor(46,139,87); break;
                    case "darkorchid":    $this->SetTextColor(153,50,204); break;
                    case "chocolate":    $this->SetTextColor(210,105,30); break;
                    case "deepskyblue":    $this->SetTextColor(0,191,255); break;
                    case "gold":        $this->SetTextColor(255,215,0); break;
                    case "grey":        $this->SetTextColor(128,128,128); break;
                    case "midnightblue":$this->SetTextColor(25,25,112); break;
                    case "darkgreen":    $this->SetTextColor(0,100,0); break;
                    default:            $this->SetTextColor(0);
                }
                switch(strtolower($attr['SIZE']))
                {
                    case '7':    $this->SetFont('Arial','',6); break;
                    case '9':    $this->SetFont('Arial','',7); break;
                    case '12':    $this->SetFont('Arial','',8); break;
                    case '18':    $this->SetFont('Arial','',10); break;
                    case '24':    $this->SetFont('Arial','',12); break;
                    default:    $this->SetFont('Arial','',9);
                }
            }
            if($tag=='TD')
            {
               ???
            }
        }
       
        function CloseTag($tag)
        {
            //Balise fermante
            if($tag=='B' or $tag=='I' or $tag=='U')
                $this->SetStyle($tag,false);
            if($tag=='A')
                $this->HREF='';
            if($tag=='FONTC')
            {
                $this->SetTextColor(0);
            }
            if($tag=='FONTS')
            {
                $this->SetFont('Arial','',8);
            }
        }

mardi 6 décembre 2005 à 17:00:44 | Re : générer un pdf à partir de code HTML

djagger

ah bah là faut matter la doc ! :p   
mardi 6 décembre 2005 à 17:08:58 | Re : générer un pdf à partir de code HTML

putch

c'est ce que je fais mais pour les tableaux je cale grave !
je vois bien que chaque "case" sera une cellule =>  avec la methode  Cell() mais pour construire ca ...

mardi 6 décembre 2005 à 18:44:16 | Re : générer un pdf à partir de code HTML

djagger

        $pdf->Cell(100,6,"AAA",'TLR');
        $pdf->Cell(45,6,"BBB",'TLR');
        $pdf->Cell(45,6,"CCC",'TLR');
        $pdf->Cell(v,6,"DDD",'TLR');
        $pdf->ln(4);
        $pdf->Cell(45,6,"AAA",'LR');
        $pdf->Cell(45,6,"BBB",'LR');
        $pdf->Cell(45,6,"CCC",'LR');
        $pdf->Cell(45,6,"DDD",'LR');
        $pdf->ln(4);
       $pdf->Cell(45,6,"AAA",'BLR');
        $pdf->Cell(45,6,"BBB",'BLR');
        $pdf->Cell(45,6,"CCC",'BLR');
        $pdf->Cell(45,6,"DDD",'BLR');
        $pdf->ln(4);
45: largeur de la colonne
6 : hauteur de la colonne
T B L R : top bottom left right pour la bordure !

c'est pas plus compliqué ...



mercredi 7 décembre 2005 à 08:51:43 | Re : générer un pdf à partir de code HTML

putch

euh merci mais ca repond pas à ma question.... (peut etre c'est moi qui m'explique mal...)
mon probleme etais de generer un pdf en ANALYSANT le code HTML passé en paramètre

bon je crois avoir la solution, voila le mon bout de code qui fonctionne à première vue

function WriteHTML($html)
        {
            //Parseur HTML
            $html=strip_tags($html,"<b><u><i><a><img><p><br><strong><em><font><tr><blockquote><hr><td><tr><table>"); //enleve les balises non reconnus
            $html=str_replace("\n",'',$html);                                 //remplace les retours chariots par un espace
            $html=str_replace("\t",'',$html);                                 //remplace les retours chariots par un espace
            $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);     //explose la chaine
            foreach($a as $i=>$e)
            {
                if($i%2==0)
                {
                    //Text
                    if($this->HREF)
                        $this->PutLink($this->HREF,$e);
                    elseif($this->tdbegin) {
                        if(trim($e)!='' and $e!="&nbsp;") {
                            $this->Cell($this->tdwidth,$this->tdheight,$e,$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
                        }
                        elseif($e=="&nbsp;") {
                            $this->Cell($this->tdwidth,$this->tdheight,'',$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
                        }
                    }
                    else
                        $this->Write(5,stripslashes($e));
                }
                else
                {
                    //Balise
                    if($e{0}=='/')
                        $this->CloseTag(strtoupper(substr($e,1)));
                    else
                    {
                        //Attributs
                        $a2=explode(' ',$e);
                        $tag=strtoupper(array_shift($a2));
                        $attr=array();
                        foreach($a2 as $v)
                            if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
                                $attr[strtoupper($a3[1])]=$a3[2];
                        $this->OpenTag($tag,$attr);
                    }
                }
            }
        }

function OpenTag($tag,$attr)
        {
            switch($tag){
                case 'TABLE': // TABLE-BEGIN
                    if( isset($attr['BORDER'])) $this->tableborder=$attr['BORDER'];
                    else $this->tableborder=0;
                    break;
                case 'TR': //TR-BEGIN
                    break;
                case 'TD': // TD-BEGIN
                    if( isset($attr['WIDTH'])) $this->tdwidth=($attr['WIDTH']/4);
                    else $this->tdwidth=40; // par defaut longueur à 6
                    if( isset($attr['HEIGHT'])) $this->tdheight=($attr['HEIGHT']/6);
                    else $this->tdheight=6; // par defaut hauteur à 6
                    if( isset($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="L"; // par defaut alignement à gauche
                    if( isset($attr['BGCOLOR'])) {
                        $coul=hex2dec($attr['BGCOLOR']);
                            $this->SetFillColor($coul['R'],$coul['G'],$coul['B']);
                            $this->tdbgcolor=true;
                        }
                    $this->tdbegin=true;
                    break;
            }
        }

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



Cette discussion est classée dans : code, générer, partir, html, pdf


Répondre à ce message

Sujets en rapport avec ce message

Générer des pahes html à partir de php [ par ala_daly ] Comment faire pour générer à la volée des pages statiques (.htm) à partir de pages dynamiques php. Merci convertion d'extention de fichiers txt en html à partir d'un code [ par appolin1 ] sulut la famille,vous allez bien j'espère. les gars,les filles, je suis coinçé. En fait je developpe un site web dans lequel se trouve des fichier tx Créer des documents XML avec MySQL et PHP [ par kate1910 ] Bonjour tout le monde , bon comme le titre indique j'essaye decréer un fichier XML avec MySQL et PHP . dans ma base de donnée j'ai une tables" tablea Ouverture dans une autre page [ par anthony428 ] Bonjour, j'ai un lien vers une fonction d'export au format pdf mais l'ennui est que je voudrais que mon pdf s'ouvre dans une autre page, l'équivalen Récupérer un mot dans un texte [ par fabienfs ] Hello, Petite question : j'ai une variable [i]$content[/i] contenant du code HTML. Que voici : [code=html] Générateur PDF performant [ par krimog ] Bonjour à tous Je suis actuellement sur un projet en PHP5 qui nécessite la génération de fichiers excel et pdf. Je me suis donc penché sur la librair HTML vers PDF [ par spike911 ] Bonjour, j'ai besoin d'une code qui me permet de transformer un contenue Web en PDF. J'explique le context de mon problème: J'ai une formule PHP/MyS Recherche de solution pour exportation de contenu HTML vers PDF [ par sburjade ] Bonjour, Je recherche une solution, payante s'il le faut, pour exporter des contenus HTML vers PDF. J'aurai pu me contenter de la classe FPDF et de Récupérer contenu HTML convertir en JS [ par fabienfs ] Bonjour, Mon sujet n'est pas très compréhensible mais voici ma question : J'ai un ami qui veut intégré le "header" de mon site (qui contient mes log URL rewriting PHP HTML et redirection [ par smed79 ] [b]Bonjour,[/b] [^^happy13] je cherche comment je remplace l'extension PHP avec HTML dans un URL et rediriger les liens .PHP vers les .HTML [b]note:


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales