1

Bonjour,

J'utilise HTML2PDF depuis peu (bravo pour le boulot, je m'enlisais avec DOMPDF qui ne me permettait de faire qu'une ou deux pages par PDF).
Je coince sur un problème qui (a priori) doit être tout bête... Sur la page de démo de HTML2PDF, il y a l'exemple 8 qui montre qu'il est possible de faire des tableaux imbriqués avec des bords de couleurs. Le PDF généré montre bien ces couleurs. Quand je copie le code HTML de l'exemple 8 dans mon propre script PHP, ces couleurs n'apparaissent pas. Quelqu'un a-t-il déjà eu ce problème ?

Pour info, je bosse sous Ubuntu 8.10, serveur LAMP, framework PHP Kohana.

Merci !
__________________
Ralph Sicabol

2

cela pourrait venir d'un problème de style CSS que tu aurais chargé et qui affecterait les tableaux

par contre, dans l'exemple 8, il n'y a pas de tableaux imbriqués, mais justes 3 tableaux les un en dessous des autres, avec des colspan et rowspan
Ancien pseudo : lolo

3

Merci de ta réponse, Spipu.

Je vais regarder ça de plus près, mais a priori dans mes tests j'avais essayé avec un CSS externe, puis avec les styles directement dans les balises. En tout cas, je sais que ça devrait marcher ;-)
__________________
Ralph Sicabol

4

Après quelques essais, il semble que le problème vienne du framework PHP, Kohana. En effet, lorsque je lance les exemples directement depuis mon serveur Apache, l'exemple 8 marche à merveille. Par contre, quand je lance un script sur Kohana faisant appel à html2pdf en require, les bords ne s'affichent pas... Peut-être est-ce un problème dû au fait que Kohana utilise par défaut l'encodage UTF-8... Je continue mes investigations ;-)
__________________
Ralph Sicabol

5

quand tu dis "les bords", tu veux dire quoi ? tu pourrais faire une capture d'écran ?
Ancien pseudo : lolo

6

Par "bords" j'entends tout simplement les bordures d'un tableau (style "border: solid 1mm #000000;" sur les tags table ou td).
__________________
Ralph Sicabol

7

Voici le rendu PDF de l'exemple 8 dans mon framework Kohana. Le code HTML est bien entendu identique à celui de l'exemple 8.

tromb Fichier joint : dk0K (exemple08.png)
__________________
Ralph Sicabol

8

tiens, en effet, c'est vraiment bizarre ca ! il y a la place des borders, mais on ne les voit pas. As-tu la dernière version de ton lecteur de pdf ? (je ne pense pas que ca doit être adobe reader car apparemment t'es sous ubuntu)

tu pourrais carrément poster le fichier PDF généré, pour que j'essaye de l'ouvrir ? et également appeler le ton scrip en rajoutant le paramètre ?vuehtml pour verifier le code HTML envoyé à html2pdf ?

Ancien pseudo : lolo

9

La représentation HTML est bonne, le code HTML est correct (j'avais peur qu'il y ait des caractères spéciaux générés, mais non...).

tromb Fichier joint : 3z2s (exemple8_html.png)

(supprimé par Spipu - le code générait une erreur d'affichage de la page sous FF)

Modification du post par Spipu : désolé, j'ai du modifié ton message, ca engendrait une erreur d'affichage de la page, cf topics/117059-test-interpretation-de-style#3
__________________
Ralph Sicabol

10

J'ai essayé sous WinXP (sous VirtualBox) et le résultat est pire... j'ai une erreur sous Adobe Reader 9 :

tromb Fichier joint : oDMb (exemple8_WinXP.png)

Voici le PDF généré :

tromb Fichier joint : exemple8.pdf

Pour mon lecteur sous Ubuntu, il est à jour (Ubuntu 8.10, mis à jour dès que possible ;-) ). De plus, pour les PDF générés directement avec html2pdf dans mon répertoire /var/www, il n'y a aucun problème de génération et de lecture des bordures.

A noter que j'ai tenté de convertir les classes php de l'encodage ISO-8859-1 en UTF-8, sans que cela change quoi que ce soit. Merci du coup de main !
__________________
Ralph Sicabol

11

vu où le player plante sous windows (au niveau des bordures), le pb viendrait de là.

as-tu essayé avec la v3.15 ?

ce qui est zarb, c'est que vu ce que tu me dis, ca viendrait de ton framework. peut-être qu'il fait automatiquement un traitement quelconque sur le contenu avant de l'envoyer au navigateur, et qu'il faudrait le désactivé dans le cas d'une génération de documents autres que HTML
Ancien pseudo : lolo

12

Je n'ai pas essayé avec la 3.15 (je vais tenter le coup, on ne sait jamais ;-)).

Concernant les plantages sous Windows, il y a la même erreur au niveau des <hr>. En effet, il faut que je vire les styles de bordures ET les <hr> pour ne plus avoir de problème...

Je vais poster le problème sur le forum de Kohana. J'indiquerai les réponses si j'obtiens une solution. Merci en tout cas !
__________________
Ralph Sicabol

13

c'est normal que les <hr> plantent autant que les borders des tables, car c'est la meme fonction qui fait les deux tracés

donc cela pourrait venir d'une incompatibilité entre ton framework et la manière dont sont écrits les borders... vraiment zarb !


tu peux essayer la chose suivante :
- générer le fichier PDF de l'exemple 8 sans ton framework et sauver le fichier PDF obtenu
- générer le fichier PDF de l'exemple 8 avec ton framework et sauver le fichier PDF obtenu
- comparer octet par octet les 2 fichiers pour voir où se situe la différence, et donc quelle caractère pourrait poser problème
Ancien pseudo : lolo

14

J'ai généré deux PDF comme tu le proposais, et toute la partie "contenu" des fichiers est différente. Le début et la fin des fichiers sont identiques...
Il y a donc un problème au niveau de la génération de mon code HTML dans le framework. Cela doit être du au fait que c'est un framework qui traite toutes les pages en UTF-8...
__________________
Ralph Sicabol

15

et tu ne peux pas désactivé le post-traitement via une commande ? il n'appelerait pas un truc du genre ob_start(array('Kohana', 'output_buffer')); ? dans ce cas, essaye de le désactiver
Ancien pseudo : lolo

16

J'ai bien trouvé un ob_start() que j'ai temporairement mis en commentaire, mais ça ne change rien. De toute façon, je n'utilisais pas le buffer pour le code HTML.

Etant donné que ça me gave un peu (et que je ne vais pas passer 15 jours dessus non plus ;-) ), je vais plutôt me pencher vers une solution où Kohana va lancer une page PHP "hors Kohana" qui va générer le PDF (selon du code HTML généré via Kohana) et le balancer à l'internaute, ça sera plus "simple".

Encore merci pour tes indications, Spipu ! Si un jour je trouve une solution plus "embarquée" dans Kohana, j'en ferai part.
__________________
Ralph Sicabol

17

ok ca marche

bonne chance !
Ancien pseudo : lolo

18

Tout marche nickel, avec la pirouette de laisser html2pdf dans /var/www (j'aurais préféré que tous mes scripts soient dans le même répertoire afin de faciliter le déploiement chez le client, mais bon, on ne peut pas tout avoir ;-) ).

Pour ceux que ça intéresserait, il suffit dans le contrôleur de Kohana de lancer :
url::redirect('http://localhost/html2pdf/generateur_client.php');

Dans le répertoire html2pdf, j'ai ajouté generateur_client.php :
<?php

	if ($_SERVER["REMOTE_ADDR"] != '127.0.0.1') die('Interdit');

	// On définit l'URL de la page sous Kohana qui génèrera le code HTML.
	$url = 'http://localhost/monsite_kohana/controleur_html_pdf';

	require_once('html2pdf.class.php');

	// On récupère le contenu
	$curl= curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	$content = iconv('UTF-8', 'ISO-8859-1', curl_exec($curl));
	curl_close($curl);


	$html2pdf = new HTML2PDF('P','A4', 'fr', array(5, 5, 5, 5));

	$html2pdf->WriteHTML($content);

	$html2pdf->Output('mon.pdf');



Et le tour est joué.

Ne reste plus que HTML2PDF accepte les images SVG ;-)

Enorme merci !
__________________
Ralph Sicabol

19

Attention aux race conditions avec cette solution - s'il y a 2 requêtes en même temps, tu risques d'envoyer le mauvais fichier à l'un ou l'autre client, voire aux deux.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

Merci de la prévention, Kevin, mais bien entendu j'avais pris cela en compte : j'ai simplifié le code ci-dessus afin qu'il soit adaptable pour d'autres solutions ! Mais tu fais bien de le remarquer ;-)
__________________
Ralph Sicabol

21

en tout cas, je suis sur qu'il y a plus simple et qu'il est possible d'utiliser directement html2pdf dans Kohana

as-tu essayé de lettre un "ob_end_clean();" juste avant la génération du pdf ?
Ancien pseudo : lolo

22

Ouaip, et ça n'a malheureusement rien changé...
Je vais terminé le projet sur lequel je bosse et je me remettrai plus sérieusement sur l'intégration dans Kohana (on y croit ;-) ).
__________________
Ralph Sicabol