phpToPDF : réencodage html ?

Répondre
burnedsoul
le 19/07/2007 à 16:56
burnedsoul
Bonjour à tous,
J'utilise la librairie phpToPDF pour mettre en PDF un texte saisie dans un formulaire avec RichTextEdit.
Mon grand souci est que phpToPDF affiche le texte brut (genre un <span style='font-weight:bold'>Texte en gras</span>) malgré applcation de html_entity_decode() auparavant.
Ce qui est logique puisque la seule manière de formater le texte est en appelant la méthode PDF() avec des paramètres genre :

$PDF -> Write (5, "B", "Texte en gras");


Problème, il faut donc parser le message, pour détecter tous les <span style='font-weight:bold'>, ce qui peut être lourd puisque le gras n'est pas le seul formattage du texte...

Donc est ce quelqu'un à déjà effectué ce genre d'opération et à trouvé une astuce/routine/miracle pour remédier à ce problème ?

Quand bien même il faille passer par la méthode barbare, c'est à dire parser le tout, je me suis lancé dans des tests et je suis bloqué par ce fait :

// Considérons que $message est le texte écrit via le formulaire
$mess = ereg_replace('<span style="font-weight:bold;">', "Write(5, "B", ????)", $message);


les ???? représentent mon souci : puisque $mess représente le texte parsé, comment l'implanter dans cette méthode puisqu'il va du coup me réafficher "<span style="font-weight:bold;">" ...

J'espère avoir été clair :s
Merci d'avance :)
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 19/07/2007 à 17:34
LA GLOBULE
Il faut que tu utilises preg_replace_callback au lieu de ereg_replace.
Comme çà, tu pourras appliquer une fonction au résultat que tu matches, et dans cette fonction, il te suffit d'utiliser ton Write. Regarde la doc PHP à propos de cette fonction.

PS : utilise fpdf, c'est beaucoup simple. Et de nombreuses sous lib de fpdf existent pour générer des PDF à partir de document HTML.
LA GLOBULE
le 19/07/2007 à 17:45
LA GLOBULE
Les PDF des cours du site sont générés à partir de FPDF, et crois moi, je n'ai pas eu de mal à générer des PDF avec le la couleur (notamment pour le code PHP des cours).
burnedsoul
le 23/07/2007 à 10:25
burnedsoul
Merci beaucoup pour ton aide.
Une dernière question vu que je ne maîtrise pas trop les RegEx :

Pour parser mon texte en gras, j'ai ce regex là :
$tri_bold = '<span style="font-weight: bold;">(.*)</span>';
$mess=eregi($tri_bold, $message, $terme);

Or, si j'ai un texte genre :

"le [b]21[/b] juin à [b]18h00[/b], il y a la fête de la musique.".


$terme me retourne :

"[g]21[/g] juin à [g]18h00[/g]".


Et je voudrais juste ce qu'il y a en gras ^^
Mon regex ne doit pas être bon ;)
Webmaster de Clikmag http://www.clikmag.fr
burnedsoul
le 23/07/2007 à 11:28
burnedsoul
Ok merci, j'ai bien obtenu un matchage complet mais cela ne résoud pas complètement mon problème :
Je veux pouvoir déterminer quelle balise met en gras (<span style="font-weight:bold ;>texte en gras </span>"), quelle balise met en italic etc ...
Quelqu'un à une regex sous la main pour ça ?
Merci d'avance :)
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 23/07/2007 à 12:02
LA GLOBULE
<?php
$pattern[0] = "(\[b\](.+?)\[\/b])is";
$pattern[1] = "(\[i\](.+?)\[\/i\])is";
$pattern[2] = "(\[u\](.+?)\[\/u\])is";
$pattern[3] = "(\[s\](.+?)\[\/s\])is";

$replace[0] = '<span class="gras">$1</span>';
$replace[1] = '<span class="italique">$1</span>';
$replace[2] = '<span class="souligne">$1</span>';
$replace[3] = '<span class="barre">$1</span>';

$string = preg_replace($pattern, $replace, $string);
?>


Voila ce que j'utilise sur lephpfacile.
A adapter.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours