30

ok, donc ca rejoint les autres pbs (utilisation avec nukephp et zend framework)

il va falloir que je me penche sérieusement sur ce pb moi...
Ancien pseudo : lolo

31

Est-ce que tu connais un bon analyseur de pdf pour que je tente de déterminer ce qui ne passe pas bien avec ma génération ?

32

moi j'ai resolu le probleme en creant des fichiers html puis j'appeles un autre script en lui passant le fichier html pour conversion...

33

voodoonet (./32) :
moi j'ai resolu le probleme en creant des fichiers html puis j'appeles un autre script en lui passant le fichier html pour conversion...

Ca ne change rien pour moi :-(

34

Salut à tous,

J'ai suivi ce fil avec intérêt : j'ai le même problème avec Code Igniter alors que ça fonctionne sur mes sites précédents, développés intégralement à la mano.

Dès que je mets une classe, un style en ligne dans un tableau (dans mon cas), la table ne s'affiche pas.
Exemple dans une balise td ou div :
class= ne génère rien
style= fait idem : rien

Exemples inclus dans dossier res :
Aucun ne fonctionne non plus, avec la 3.18 ou la 3.22 s'il y a du style

Sortie en string, fichier ou download = idem


Par contre, une sortie en HTML fonctionne nickel : writeHTML($donnees, true) affiche bien les td avec le style adéquat. Mais que faire ensuite de ce résultat pour le passer en PDF ?


Espérant avoir été clair.

Un lien avec la gestion de la mise en cache ?

35

argh, donc ma lib ne marcherait plus dès qu'elle serait incluse dans un framework ?! là ca devient vraiment zarb ! surtout que chez moi ca marche sous symfony...
Ancien pseudo : lolo

36

Spipu (./35) :
argh, donc ma lib ne marcherait plus dès qu'elle serait incluse dans un framework ?!



.pdf', 'D');
Petit test : $html2pdf->WriteHTML('bla<br /><div style="background-color: #F3F3F3;">ici</div><br />bla', false);
$html2pdf->Output('test
Ca donne un pdf non valide. (en pièce jointe)

', true); Alors que $html2pdf->WriteHTML('bla<br /><div style="background-color: #F3F3F3;">ici</div><br />bla affiche bien le résultat à l'écran.




tromb Fichier joint : test.pdf

37

J'ai une mauvaise nouvelle pour toi mais oui, c'est le cas. En même temps, c'est beaucoup clair maintenant.

Voici les 2 tests que j'ai faits :

1 - j'ai généré le PDF (ob, write et output) à partir du code exécuté cad Code Igniter (CI) qui a tendance à tout configurer (sessions et cache) = défaut qu'on connait tous

2 - j'ai généré juste le HTML par CI et redirigé vers une nouvelle page php qui ne contient que l'ob, le write et le output : résultat, ça marche


C'est sûr, c'est la config initiale générée par certains frameworks qui inhibe le travail de ta classe.
Après, pour savoir lequel, peut-être qu'il faudrait que tu installes Code Igniter (qui est quand même plutôt simple avec peu de fichiers) et que tu vises les points de config qui pourraient être en cause. Mais plus simple, tu peux aller là, http://codeigniter.com/user_guide/ et vérifier certains points directement (notamment 'caching').

Après, je pense qu'une adaptation de ton code comme tu en as l'expertise permettra de corriger

38

chez moi : j'ai un setlocale(LC_ALL, 'fr_FR');J'ai trouvé le responsable appelé dans mon frontal qui gêne ta classe.
Après, je ne sais pas trop pourquoi.

39

zarb. je viens de tester, cette commande ne gène pas chez moi.
Ancien pseudo : lolo

40

solito >

j'ai installé CI, laissé la config par défaut, et j'ai créé le module suivant :

<?php

class Welcome extends Controller {

	function Welcome()
	{
		parent::Controller();	
	}
	
	function index()
	{
		require_once(dirname(__FILE__).'/../../../../html2pdf_v3.24/html2pdf.class.php');
		$html2pdf = new HTML2PDF('P','A4','fr');
		$html2pdf->pdf->SetDisplayMode('fullpage');
		$html2pdf->WriteHTML('bla<br /><div style="background-color: #F3F3F3;">ici</div><br />bla', false); 
		$html2pdf->Output('exemple00.pdf');
	}
}

/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */


ben ca marche impec chez moi...
Ancien pseudo : lolo

41

Moi j'ai un setlocale(LC_ALL,'fr_FR.utf-8', 'fr_FR.iso-8859-15') ;

Mais je ne peux pas tester sans car le site est en prod, je jongle en permanence pour afficher les messages d'erreur sans planter la navigation.

42

heu, tu n'as pas d'environnement de dev et de recette ?!
Ancien pseudo : lolo

43

ah tous ceux qui ont le problème, est-ce qu'ils peuvent tester en rajoutant juste après la création de l'objet HTML2PDF la ligne suivante :

$html2Pdf->pdf->SetCompression(false);

cette commande est à placer avant le writeHTML
Ancien pseudo : lolo

44

Ca ne marche pas pour moi :-(

45

Bonne nouvelle, j'ai trouvé d'où venait le problème (dans ma configuration en tout cas) :
le setLocale(LC_ALL, 'fr_FR') définit le séparateur décimal comme virgule. Des fonctions comme sprintf (de mypdf.class.php par exemple) renvoient des valeurs avec un séparateur virgule alors que le PDF attend des données avec le séparateur décimal point.

ponse['nom_fichier'], 'D');
Dans mon cas, je fais donc setLocale(LC_ALL, 'en_US');
$html2pdf->WriteHTML( [...], false);
setLocale(LC_ALL, 'fr_FR');
$html2pdf->Output($this->re

Pour vérifier votre conf, regardez la valeur de decimal_point du tableau renvoyé par localeconv().

En espérant que cela serve à d'autres

46

sérieux ? c'est pour ca ??? bon ben je vais modifier pour ne plus utiliser ces fonctions !

merci beaucoup pour ta recherche !!!!
Ancien pseudo : lolo

47

HTML2PDF v3.24 vient de sortir, et devrait normalement corriger ce pb. tu peux me tenir au courant ? merci !
Ancien pseudo : lolo

48

Merci, ça marche bien et merci aussi pour ta rapidité.

49

merci à toi pour les recherches !
Ancien pseudo : lolo

50

Spipu (./42) :
heu, tu n'as pas d'environnement de dev et de recette ?!

Le site a été lancé à moitié fonctionnel et l'environnement serveur était très différent ; pas le temps, pas l'envie du client. Savoir jongler avec la limite, c'est ça aussi développer ; t'as pas toujours le confort que tu souhaites parfois. Et puis c'était pas très risqué entre nous...

51

naxos (./45) :
Bonne nouvelle, j'ai trouvé d'où venait le problème (dans ma configuration en tout cas) :
le setLocale(LC_ALL, 'fr_FR') définit le séparateur décimal comme virgule. Des fonctions comme sprintf (de mypdf.class.php par exemple) renvoient des valeurs avec un séparateur virgule alors que le PDF attend des données avec le séparateur décimal point.

ponse['nom_fichier'], 'D');
Dans mon cas, je fais donc setLocale(LC_ALL, 'en_US');
$html2pdf->WriteHTML( [...], false);
setLocale(LC_ALL, 'fr_FR');
$html2pdf->Output($this->re

Pour vérifier votre conf, regardez la valeur de decimal_point du tableau renvoyé par localeconv().

En espérant que cela serve à d'autres

Je vais tester bientôt sur un prochain projet mais maintenant que tu le dis, ça semble logique.
Je testerai sur mon prochain projet avec la v3.24 et reviens vers toi ensuite pour te raconter l'affaire.

52

depuis la derniere version, c'est corrigé, la localisation n'a plus aucun effet sur la génération de PDF avec HTML2PDF wink
Ancien pseudo : lolo