1

Bonjour à tous

Je veux d'abord féliciter et dire merci à celui qui a créé cet outil car il dépanne beaucoup !

Je reprend une application commencée par quelqu'un d'autre. Elle utilise un outil de saisie qui s'appelle TinyMCE qui génère un code HTML reprenant ce qui a été saisi avec la mise en page. Ce code est stocké tel quel dans la colonne d'une une table MySQL.
Pour l'afficher, la base est consultée et le code est affiché avec echo (on affiche directement le contenu de la table).
Je veux ajouter une option d'impression en passant par du PDF afin de garder la mise page.
Pour cela, j'utilise html2pdf. Le problème c'est quand l'utilisateur insère un saut de page. Ce dernier est retranscrit comme tel : <p><span style="font-size: medium;"><!-- pagebreak --><br /></span></p>
Mais ce n'est pas reconnu par html2pdf.
Débutant en php, j'ai vu qu'il y avait une fonction preg_match_all() qui me permet de retrouver des balises, des chaines de caracteres.
Est-ce que c'est judicieux que je fasse une recherche et que je remplace le code par une fermeture de la balise page suivie d'une ouverture d'une nouvelle balise ? Est-ce que c'est possible ?

Mon second problème c'est que lorsque l'utilisateur insère (toujours en passant par l'outil de saisie) une image à la fin d'une page (sans le savoir car l'outil ne lui dit pas qu'il arrive à la fin d'une page comme avec word par exemple, mais je suis en train de chercher par là aussi) mais qu'il n'y a plus assez de place (du genre, il reste encore 7 lignes mais l'image est plus grande encore), html2pdf met cette image sur une nouvelle page (jusque là pas de problème) mais elle commence à la moitié de la page ! Du coup, la moitié gauche de l'image dépasse de la feuille...
Est-ce quelqu'un saurait me dire pourquoi ?

Merci d'avance !

Malha


PS : j'utilise EasyPhp avec php5 sur windows server 2003

2

Malha (./1) :
Pour cela, j'utilise html2pdf. Le problème c'est quand l'utilisateur insère un saut de page. Ce dernier est retranscrit comme tel : <p><span style="font-size: medium;"><!-- pagebreak --><br /></span></p>
Mais ce n'est pas reconnu par html2pdf.
Débutant en php, j'ai vu qu'il y avait une fonction preg_match_all() qui me permet de retrouver des balises, des chaines de caracteres. Est-ce que c'est judicieux que je fasse une recherche et que je remplace le code par une fermeture de la balise page suivie d'une ouverture d'une nouvelle balise ? Est-ce que c'est possible ?


tout à fait, et tu n'as meme pas besoin de preg_match_all... juste un str_replace :

$source = str_replace('<p><span style="font-size: medium;"><!-- pagebreak --><br /></span></p>', '</page><page pageset="old">', $source);

pour ton problème d'image, je n'arrive pas à visualiser. tu pourrais donner un exemple de code HTML engendrant le pb ? (avec l'image associée, ou du moins ces dimensions)
Ancien pseudo : lolo

3

Merci d'avoir répondu aussi vite !

Pour pouvoir faire mes tests, j'ai recopié en brut le contenu de la table MySQL et j'ai collé tout ça dans une page de code à part. Voici ce qui est généré par l'éditeur :

<page>
<p style="text-align: center;"><span style="font-size: 15pt;"><strong><span style="color: #008080;">XXXXXXXXX XXXXX XXXX XXXXXX</span></strong></span></p>
<p> </p>
<p><span style="font-size: medium;"><span style="color: #008080;"><span style="text-decoration: underline;"><strong>Yyy yy yyyyyy :</strong></span></span></span></p>
<p> <span style="font-size: medium;">  Zzzzzzzz zz zzzzzzzzz zz z zzzzzzzzz zzzzzzz zz zzzz z zzzzzzzzz zzzzzzz zz</span><br /><br /><span style="font-size: medium;"><span style="color: #008080;"><span style="text-decoration: underline;"><strong>Contraintes :</strong></span></span></span></p>
<p>  <span style="font-size: medium;"> Aa aaaaaaaaa aaaa aa aaaaa aa aaaaa aaaaaaaa, a aaaaaa aa'a aaaa aaaaaa aa aaaaaa aaaa aaaaaaaa aaaa aaaaaaaa aaaaaaa aaaa aaaaaaaaaaaa aa aaaaaaaa.<br /></span><br /><span style="font-size: medium;"><span style="color: #008080;"><span style="text-decoration: underline;"><strong>Déroulement du projet :</strong></span></span></span></p>
<p style="text-align: center;"><img title="reseauL1.jpg" src="img/reseauL1.jpg" alt="reseauL1.jpg" width="628" height="217" /></p>
<p> </p>
<p><span style="font-size: medium;"><span style="color: #008080;"><span style="text-decoration: underline;"><strong>Bbbbb b :</strong></span></span></span></p>
<p>  <span style="font-size: medium;"> bbbbbbbbbbbb b’bb bbbbbbb bébbbb bb, bb bbbbbb bbbb à bbbb bbbbbb bbbbbbb bb bbbbbbb bbbb bbb bbbbbb bébbbb (bb) bbâbb à bb bbbbbbbbbbb bbbbé bbbb bbb bbbbbbb.</span></p>
<p> </p>
<p style="text-align: center;"><img title="reseaux_L1_H1.jpg" src="img/reseaux_L1_H1.jpg" alt="reseaux_L1_H1.jpg" width="628" height="232" /></p>
<p> </p>
<p><span style="color: #008080;"><span style="text-decoration: underline;"><strong><span style="font-size: medium;">Ccccc c :</span></strong></span></span></p>
<p>  <span style="font-size: medium;"> Dddd dd ddddddd ddddddddd dd. ddd dddd ddddddd dd ddddd dd dddddd dd dd dddddddddd dd dd ddd ddddddddddd dd dddddèdd dddd dd dddéddddddd. dddd dddd dd ddddddddd dd dddddddddd dd ddddd dddddddé. d'dddddddd dd dd ddddd dddd/éddddd ddd ddddédd/dddddds ddd dd dédddd dddddddd dd ddddddddd dd ddddddd dddd dddddddddd dd.</span></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>

<p style="text-align: center;"><img title="etape2.jpg" src="img/etape2.jpg" alt="etape2.jpg" width="628" height="423" /></p>
<p> </p>
<p><span style="color: #008080;"><span style="text-decoration: underline;"><strong><span style="font-size: medium;">Eeeee eenbsp;:</span></strong></span></span></p>
<p>  <span style="font-size: medium;"> </span><span style="font-size: small;"><span style="font-size: medium;">eeee ee eeeeee eeeeeeee eeeseeeeee ee eeeee eeeeeeeee ee eeee<br /></span><br /></span></p>
<p style="text-align: center;"><img title="etape3.jpg" src="img/etape3.jpg" alt="etape3.jpg" width="628" height="418" /></p>
<p><br /><span style="color: #008080;"><span style="text-decoration: underline;"><strong><span style="font-size: medium;">Ffffff ff :</span></strong></span></span></p>
<p> <span style="font-size: small;">  <span style="font-size: medium;">fGgggggggggg ggg ggggggggg gggggg g'ggggégg/ggggggg, g'gggggggggggg gg ggg gggggg gg géggggggg ggggg ggggggg gâggggg, gg ggggg ggggggg ggggggg ggg gggggggggggggg gg - gggggg gggggggggg g'ggggggg gggggggggggg gg gggg ggsggggggg g/g gg. ggggégggu gg ggg éggggggggg gggggggé.</span></span></p>
<p style="text-align: center;"><img title="etape4.jpg" src="img/etape4.jpg" alt="etape4.jpg" width="628" height="244" /></p>
<p style="text-align: left;"> </p>
</page>



Alors dans le code au-dessus, j'ai sauté des lignes pour que l'image ne soit pas décalée sur la droite (les cinq lignes en vert) et voici ce que ça donne niveau pdf :
tromb Fichier joint : exempleDePDF.pdf

Mais si j'enleve les lignes que j'ai ajouté, j'ai ça :
tromb Fichier joint : exemplePDFdecale.pdf

Sinon, normalement, pour afficher l'article de l'utilisateur, c'est ce code là qui est lancé et c'est à partir de là que je fais la conversion en pdf (même résultat pour même code dans la base mysql) :

<?php
/* Require php user-defined functions */
require 'functions.php' ;


echo "<page>" ;

/* Top of page */
//require 'top.php' ;

/* mySQL Connect */
$link = db_connect () ;
if (!$link)
{
echo "Erreur de connexion à mySQL !<br />" ;
exit () ;
}

$query_search = "SELECT `article`.title, `article`.subtitle, `article`.author, `article`.text, `article`.timestamp FROM `article` where article.subtitle='Synthese'";
$result_search = mysql_query ($query_search) or die ("Error: Query failed!<br />".mysql_error()."<br />") ;

while ($RES = mysql_fetch_array ($result_search))
{
echo $RES['title']."<br />".$RES['subtitle']." ".$RES['author']." ".$RES['text']." ".$RES['timestamp']."<br />" ;
}

/* mySQL Disconnect */
$link = db_disconnect ($link) ;
if (!$link)
{
echo "Error: Can not disconnect from mySQL!<br />" ;
echo "<br /><a href=\"index.php\">Revenir à l'accueil</a>." ;
}

/* Bottom of page */
//require 'bottom.php' ;
echo "</page>";
?>



Et les balises page ont été ajoutées pour pouvoir utiliser html2pdf

En tout cas, merci beaucoup de ton aide !!


4

J'ai juste oublié de dire qu'avant certains titres mais pas tous étaient aussi décalés. J'ai passé une ligne avant et après chaque image et ça avait l'air d'aller.
Donc maintenant, je compte demander à l'utilisateur de laisser une ligne avant et après chaque image pour être sûre qu'il n'y aura plus ce problème.