Je viens pendant 2 jours de tester 2 methodes qui restent insuffisantes pour créer un tableau en pdf à partir d'une base mysql
J'utilise phptoPDF
Que pensez vous de ma démarche
Methode 1
1 J'extrais de ma base du code html
2 Je nettoie les balises
3 je cree le pdf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function meftexte($texte){ $texte=str_replace("\r",'',$texte); $texte=str_replace("\n",'',$texte); $texte=str_replace('<BR>',"\n",$texte); $texte=str_replace('<br>',"\n",$texte); $texte=str_replace('<br/>',"\n",$texte); $texte=str_replace('<br />',"\n",$texte); $texte=str_replace('<blockquote>'," ",$texte); $texte=str_replace('<li>',"\n",$texte); //$texte=str_replace('</li>',"\n",$texte); $texte=str_replace('<p>',"\n",$texte); $texte = str_replace("é", "é", $texte); $texte = str_replace("à", "à", $texte); $texte = str_replace("è", "è", $texte); $texte = str_replace("ë", "ë", $texte); $texte = str_replace("ê", "ê", $texte); $texte = str_replace("ç", "ç", $texte); $texte = str_replace("ù", "ù", $texte); $texte = str_replace(" ", " ", $texte); $texte = str_replace(""", "'", $texte); $texte = strip_tags($texte, '<a><b><i><img>'); return $texte; }
4) Tout fonctionne mais je n'arrive pas à conserver les liens hypertextes ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $PDF = new phpToPDF(); ........ $contenuTableau = array($c1l2,$c2l2,$c3l2); $PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau); $PDF->AddPage();
Méthode 2
J'ai trouvé un script sur pdf.org qui permet de mieux traduire mon code html avec creation des liens les liens
J'ai copié cette fonction dans phptoPDF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 function WriteHTML($html) { //Parseur HTML $html=str_replace("\n",' ',$html); $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); foreach($a as $i=>$e) { if($i%2==0) { //Texte if($this->HREF) $this->PutLink($this->HREF,$e); else $this->Write(5,$e); } else { //Balise if($e{0}=='/') $this->CloseTag(strtoupper(substr($e,1))); else { //Extraction des attributs $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); } } } return $html; }
J'ai donc
Dans le fichier principal, j'ai l'appel de la classe
Dans le fichier phptopdf contenant ma classe, j'ai comme structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $contenuTableau = array($c1l2,$c2l2,$c3l2); $PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class phpToPDF extends FPDF { function WriteHTML($html){ .... } function Draw_Data($data, $header = true){ $this->MultiCellTable( $data[$i]['CELL_WIDTH'], $data[$i]['LN_SIZE'], $this->WriteHTML($data[$i]['TEXT']), ....) } function drawTableau(&$pdf, $tableType, ..., $datas){ .................. $pdf->Draw_Data($data); } }
J'ai à l'affichage de mon pdf deux fois le texte !
Une première fois bien positionné dans la cellule (multicell parfaitement appliqué) mais non formaté par le WriteHTML
Une seconde fois parfaitement formaté par le WriteHTML mais positioné en dehors de la cellule.
writeHTML ne fait pas que retourner la chaine à écrire mais l'écris également, donc, ca l'écris deux fois.
Arrivé la... je suis perdu !!
Au secours !
Partager