1

Bonjour à tous et à toutes,

Je commence par remercier les personnes qui ont eu cette superbe initiative ;-)

Je viens d'utiliser les class html2pdf et après quelques modifications sur celles-ci (notamment au niveau du lien sur les images), j'arrive à obtenir un PDF ce qui est déjà pas mal du tout !

Je requête une base de données MySQL qui récupère des données issus d'un éditeur de texte.

Malheureusement, lorsque le PDF se créer, j'ai un message d'erreur d'adobe reader disant que cette page contient des erreurs. D'où peut venir ce problème ?

Ensuite, le document créé est pas trop mal mais parfois le texte passe dessus les images. Peut-on arranger ceci ?

Lien du PDF créé : http://partir-en-vtt.com/test_export_pdf.php

Si vous avez besoin du code, n'hésitez pas de me le dire.

Par avance merci beaucoup.

Sportivement, Loïc & Flo
www.partir-en-vtt.com

On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

2

Pour info: Adobe Reader m'informe d'une erreur en lisant ton doc. Mais il l'affiche quand même.

non seulement il affiche le texte par dessus l'image, mais il affiche aussi des carrés bizarres à certains endroits, insérés dans le texte.

3

squalyl (./2) :
Pour info: Adobe Reader m'informe d'une erreur en lisant ton doc. Mais il l'affiche quand même.

non seulement il affiche le texte par dessus l'image, mais il affiche aussi des carrés bizarres à certains endroits, insérés dans le texte.



Bonjour,

les carrés bizarres sont je pense les petits smileys de mon éditeur de texte (la question est : pourquoi n'apparaissent-ils pas correctement?).

Concernant l'erreur adobe reader, je ne sais pas d'où cela peut provenir encore moins pour les problèmes de superpositions de textes.

Si quelqu'un peut m'aider à résoudre les problèmes étapes par étapes ce serait vraiment sympa !

@bientôt
Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

4

concernant le problème de superposition de textes, c'est parce que les images en float ont été mises dans le paragraphe => HTML2PDF pense que le décalage du float ne s'applique qu'au paragraphe. Essaye en mettant l'image en dehors de la balise P.

SInon, normalement, il n'y a aucune modification à faire dans HTML2PDF concernant les images. Si il te dit qu'il y a une erreur pour une image non existante, c'est que le problème est bien présent. Modifier HTML2PDF pour contourner l'erreur n'est pas forcement la meilleure chose à faire (et c'est surement ca qui donne les pbs de carré gris: c'est quand une image n'est pas trouvée et qu'on le force à l'afficher quand meme)

concernant les erreurs remontés par Adobe, étant donné que tu as modifié HTML2PDF, je ne peux pas savoir si ca vient de là ou d'autre chose... donc je te conseille fortement de reprendre la version d'HTML2PDF d'origine, et de faire fonctionner ton HTML directement avec.
Ancien pseudo : lolo

5

Bonjour et merci pour la réponse.

Concernant les images, le problème retournait une erreur N°6 : Image non trouvée alors que le lien /toto/image.jpg tombait sur une bonne image. En ajoutant un . (point) devant $src cela fonctionnait.

Par rapport au float, les images sont intégrés à la volée dans TinyMCE ce qui ne me permet pas forcément d'avoir une vue directe sur le code HTML.

Que peut-on faire ?

par avance merci.
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

6

dans ce cas là, pourquoi ne pas rajouter le point directement dans l'HTML ? car forcement un path absolue, ca ne marchera pas si le chemin n'est pas exact.

comme je le rappel souvant, on crée un pdf côté serveur, il n'y a pas de HTTP et d'urls, il n'y a que des chemins relatifs et absolues par rapport à la ou est lancé le script... et modifier la librairie pour ca est dangereux, car à la prochaine version de HTML2PDF, le pb reviendra.

concernant TinyMCE, je reprends ce que j'ai marqué à plusieurs reprises (dont dans le fichier/exemple about.php) :
Ca ne permet généralement pas la conversion directe d'une page HTML en PDF, ni la conversion du résultat d'un WYSIWYG en PDF


il faut donc adapter la source HTML, avec des expressions régulières par exemple
Ancien pseudo : lolo

7

Je viens de remettre html2pdf comme à l'origine et il y a donc le souci de l'url :http://partir-en-vtt.com/test_export_pdf.php (erreur N°6 : l'image n'est pas trouvée).
Pourtant si l'on prend l'url (/upload/web/images/moi/periples/periples_vtt/2011-04-16/paysage2.jpg) et que l'on ajoute devant : partir-en-vtt.com, l'image est bien trouvée.

A la question pourquoi ne pas rajouter le . (point) dans l'html : Enfaite, je ne m'en était pas soucié jusqu'à aujourd'hui car Tinymce fait la source toute seule...

Concernant l'adaptation de l'HTML avec des regex, je ne pense pas être assez compétent pour une telle manipulation. Est-ce si compliqué que cela ?

@bientôt et merci pour votre aide !
Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

8

non, ce n'est pas compliqué. je te conseille fortement d'apprendre à manipuler des regexp, car c'est extrêmement puissant.

concernant le . des urls, tu n'en as meme pas besoin, un str_replace devrait suffir
Ancien pseudo : lolo

9

La question que je me pose est que faut-il re-travailler mis à part ajouter un . devant mes url's ?

Personne n'a déjà entrepris la même chose étant donné que TinyMCE est assez répandu ?

@bientôt,
Loïc

On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

10

comme la dit Spipu, html2pdf fonctionne coté serveur, / du serveur n'est pas la racine de ton site mais celle du hd du serveur, les vrai adresse devrais être soit ./ soit /var/www/tonsite/ton adresse

fait simplement une regex ou comme dit plus haut un str_replace qui cherche les <img src=" et les remplace par <img src=". ou <img src="/var/www/tonsite
et la le mec il le pécho par le bras et il lui dit '

11

Ok merci, je vais regarder de ce côté pour les images et ajouter le "./" devant.

Concernant le problème avec les float, est-ce aussi corrigeable ?

@bientôt et merci
Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

12

oui, il suffit de faire une regexp qui recherche <p ...><img ... > et qui remplace par <img ... ><p ... >
Ancien pseudo : lolo

13

Ok merci pour l'aide apportée ! Je vais essayer de voir ce que je peux faire ;-). Si vous voulez me filer un coup de main, ce sera avec plaisir !

P.S : Je vais essayer de faire deux regexp afin de ne pas ralentir le système.

Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

14

Bonjour,

Pour la première j'ai fait ceci :

$i ='"';
$contenu = stripslashes($tab_periple['contenu']);
$contenu2 = preg_replace('#src="(.*\.jpg)"#','src='.$i.'.$1'.$i.'',$contenu);

Cela fonctionne mais j'aimerais faire en sorte d'ajouter les extensions .gif, .png


J'ai essayé :

#src="(.*\.jpg|.gif|.png) sans réél succès.

Est-ce que vous pourriez me donner un coup de main ?

Merci.

Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

15

ca devrait marcher ca, non ?

$contenu = preg_replace('#src="/([^"])"#', 'src="./$1"', $contenu);

mais sinon, un simple str_replace suffit...

$content = str_replace('src="/', 'src="./', $content);
Ancien pseudo : lolo

16

Bonjour et merci,

la regex ne fonctionne pas mais le str_replace lui fonctionne ;-)

La seconde regex s'annonce plus difficile ?

Si j'ai bien compris il faut mettre l'ensemble de la balise img avant la balise p

Et donc ça :
<p style="text-align: center;"><a title="Panorama sur le theatre Gallo-Romain" rel="lightbox" href="/upload/web/images/moi/periples/periples_vtt/2011-04-16/.orig/theatre_gallo_romain.jpg"><img style="border: 0pt none;" title="Panorama sur le theatre Gallo-Romain" src="/upload/web/images/moi/periples/periples_vtt/2011-04-16/theatre_gallo_romain.jpg" alt="Panorama sur le theatre Gallo-Romain" width="500" /></a></p>

Doit devenir ça :
> <a title="Panorama sur le theatre Gallo-Romain" rel="lightbox" href="/upload/web/images/moi/periples/periples_vtt/2011-04-16/.orig/theatre_gallo_romain.jpg"><img style="border: 0pt none;" title="Panorama sur le theatre Gallo-Romain" src="/upload/web/images/moi/periples/periples_vtt/2011-04-16/theatre_gallo_romain.jpg" alt="Panorama sur le theatre Gallo-Romain" width="500" /></a><p style="text-align: center;"></p
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

17

il ne faut inverser que pour les images en float
Ancien pseudo : lolo

18

Ok pour le float;

Peux-tu m'aider en me disant la démarche à suivre pour construire cette regex

Càd par exemple :


1) tester si float existe dans la balise img

puis...

Merci !

Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

19

essaye avec des trucs du style '#<p ([^>]*)><a ([^>]*)><img([^>]*)></a>#'
Ancien pseudo : lolo

20

Cette regex sélectionne ce qu'il faut mais ne fait pas la distinction s'il y a ou non de float.

Mais je pense qu'on est pas loin !
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

21

Avec cella : '#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>#'

On est bon mais-est ce que cela est correcte ?

Loïc
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

22

il me semble que ca a l'air correct smile
Ancien pseudo : lolo

23

Peux-tu m'aider à reconstituer la chaine ?


Car j'ai essayé ça :
$contenu = preg_replace('#<p ([^>]*)><a ([^>]*)><img style=\float([^>]*)></a>#','<a $2 <img style="float $3 </a><p $1</p>',$contenu);


Sans succès ;-(
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

24

<p $1 >',$contenu);Ça fonctionne avec $contenu = preg_replace('#<p ([^>]*)><a ([^>]*)><img style="float([^>]*)></a>#','<a $2><img style="float $3> </a>


http://partir-en-vtt.com/test_export_pdf.php


Par contre, les photos ne sont pas si bien placées qu'en HTML.
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

25

Autre souci, j'ai ajouté un titre issu de la même base et la conversion ne veut pas afficher les "e" avec des accents.

résultat : La Grande Travers[ée] du Jura VTT de Mandeure Saint-Claude, 250 km de libert[é]!

Tout ce qui est mis entre [] est manquant.


Avez-vous déjà rencontrer un souci similaire ?

Merci ;-)

On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

26

c'est ) cause du margin-top sur la balise P, il faut l'annuler (avec du CSS par exemple)

problème d'UTF8 surement pour les accents
Ancien pseudo : lolo

27

Bonjour,

Comment appliquer le css, si j'essaye de le mettre dans la page création pdf, il y a une erreur de header.

Concernant le problème des accents : il est étange que cela n'apparaisse que sur le titre alors que tout le texte fonctionne.


Cf :http://partir-en-vtt.com/test_export_pdf.php

Merci pour ton aide !

On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

28

Bonjour,

J'ai réussi à régler le problème d'accent sur le titre avec un utf8_encode();

Maintenant, j'aimerais faire en sorte d'aligner verticalement le texte en CSS. je procède comme ceci :
$titre ='<style type="text/css">p{text-align:justify;}</style>'; $titre .= '<p style="text-align: center;"><b>'.utf8_encode(stripslashes($tab_periple['titre'])).'</b></p>';

Malheureusement, cela n'a aucun effet sur les balises <p>.

Autre point, en regardant le PDF : http://partir-en-vtt.com/test_export_pdf.php

On remarque qu'il y a des soucis d’alignement. parfois, le texte prend toute la largeur du texte et parfois, ce n'est pas le cas. Comment régler ce souci ?

Par avance merci.
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...

29

Un chti up por favor smile
On ne va jamais aussi que lorsqu'on ne sait pas où l'on va...