1

Bonjour à tous,
J'utilise HTML2PDF avec Zend Framework pour générer des tableaux dans un PDF, cependant lorsque que je défini l'attribut CSS "border:solid 1px #000000" (ou black à la place de #000000), j'ai en retour une page blanche ... sans cet attribut pas de problème ma page est générée, mais sans bordure (evidement).

Avez vous une idée ?

Merci d'avance

Piloo

2

tu définis le border sur quel type d'élément ?
Ancien pseudo : lolo

3

Sur td et table, je définis aussi bien le width en % sur toutes les balises.
Lorsque je ne passe pas par Zend (j'envoie en POST un tableau sérialisé avec le script de vue à inclure et le tableau de données à imprimer) ca marche ! Enfin, ca marche que quand mon tableau serializé rentre dans le POST ...

Edit : et lorsque je met $html2pdf->WriteHTML($html, TRUE);, le rendu se fait avec le border ...

4

ah ok, ca marche sans zend, et ca foire avec send => a tout les coups un pb de ressource style timelimit ou memory limit. t'as regardé dans tes logs d'erreur PHP ?
Ancien pseudo : lolo

5

Je sais pas si j'ai accès aux logs, je regarderai demain.
Cependant, même quand mon tableau ne comporte que 3,4 lignes ca foire ... donc niveau memoire j'ai un doute.

Merci en tout cas, je reviendrai demain smile

Piloo

6

A priori rien dans les logs, me dit un collègue ...

7

et quand tu dis "page blanche", tu veux dire un pdf blanc, ou une page vide dans le navigateur ?
Ancien pseudo : lolo

8

PDF vide.
Je vais dire un truc que je confirmerai demain : il me semble que lorsque que j'affiche le raw sur le navigateur, le fichier est rempli. J'y pense comme ca, mais ca vient peut être de la version du Acrobat Reader.
Chose étrange aussi : il m'ai arrivé d'avoir un début de rendu, j'avais le titre du premier tableau puis le reste en blanc, cependant si je scrollais vers le bas de la page pour ensuite remonter, le titre avait disparu ... me suis-je bien expliqué ?

Pilou

9

pb de viewer pdf ?
Ancien pseudo : lolo

10

J'ai essayé avec d'autres mais rien a faire, cependant avec foxit j'ai le titre du premier tableau et pas de problème de scroll.

Pilou

11

et quand tu génère exactement le meme code HTML mais sans passer par ZEND, le pdf marche ?
Ancien pseudo : lolo

12

Oui tout a fait

13

ok, donc y aurait une imcompatibilité avec zend.. y aurait pas un post traitement automatique qu'il faudrait désactiver lors de la création de fichiers autres que html ?
Ancien pseudo : lolo

14

J'en ai pas connaissance. Et au fond je ne crée pas de fichier, je travaille directement avec la chaine retourner par Output.
En comparant les raws obtenus via Zend et par un script normal pour une même page, il y a en effet des différences ...

15

elles sont de quelle ordre ces différences ?

quand tu fais tes tests, c'est en envoyant directement le résultat du pdf au navigateur, ou c'est en le sauvegardant (via le 2em paramètre la méthode Output) ?
Ancien pseudo : lolo

16

J'ai essayé les deux, même avec le paramètre 'D', le fichier téléchargé est bon jusqu'au début du premier tableau (Il m'affiche le titre général, le titre du premier tableau, et apres page blanche avec le problème de scroll/zoom/rafraichissement énoncé plus haut)

17

et avec html2pdf->Output('repertoire/fichier_xxxx.pdf', 'F'); ca donne quoi ?

quand tu dis ca : "Et au fond je ne crée pas de fichier, je travaille directement avec la chaine retourner par Output. " tu veux dire quoi exactement ?
Ancien pseudo : lolo

18

Avec 'F', le fichier est créé sur le serveur => même rendu que lors d'un download/affichage

Oui pardon je me suis embrouillé, je confondais avec mon autre script qui imprime sans passé par zend, ou la je retourne à l'application zend le resultat de $html2pdf->Output();
Cependant si je fais :
$result= $html2pdf->Output();
$pdf = Zend_Pdf:tonguearse($result);
header('Content-type: application/pdf');
echo $pdf->render();

J'ai toujours le même problème

19

Mais ce qui est quand même formidable c'est que c'est la propriété border qui fait foirer ... sans elle ma page est générée, en passant par Zend .

20

argh, ca ne peut pas marcher ce que tu as fait en ./18

lis bien ce qu'il y a marqué ici : http://wiki.spipu.net/doku.php?id=html2pdf:fr:output
Ancien pseudo : lolo

21

Oui en effet, cependant c'etait juste un test et le problème ne vient pas de la ...

22

et donc, avec "F" comme 2em paramètre de Output, , tu m'as dit que le fichier généré sur le serveur déconnait également ?! là ce n'est pas normal car si on crée le fichier directement sur le serveur, zend ne devrait pas en modifier le contenu. est-ce que tu peux mettre exactement le code PHP que t'as utilisé pour créer le fichier sur le serveur ?

de plus, concernant ./14, tu pourrais indiquer quelles sont les différences que tu as observé ? ou mieux mettre ici pour un meme html le fichier qui déconne et celui qui marche ? je ferais une comparaison binaire
Ancien pseudo : lolo

23

Bonjour,
Alors je joins 4 fichiers :
- retard_OK_1.pdf => sans passer par Zend
- retard_KO_F.pdf => via Zend avec sauvegarde directe sur le serveur
- retard_KO_I.pdf => affichage sur le navigateur et sauvegarde par la suite
- retard_OK_borderless.pdf => le rendu via Zend sans bordure

Voici mon code sous Zend pour rendre le PDF :
      $view2= new Zend_View();       $view2->setScriptPath('app/views/scripts/equipe/pdf');       $view2->retardEquipe=$retardEquipe;       $view2->weekRange=$weekRange;       ob_start();            echo $view2->render('retard.phtml');      $content=ob_get_clean();      require_once('lib/Html2pdf/html2pdf.class.php');                 $html2pdf = new HTML2PDF('P','A4', 'fr');      $html2pdf->WriteHTML($content, false);      $html2pdf->Output('document.pdf','I');
et voici mon script :
echo'<page orientation=\'portrait\' style=\'font-size: 10px;\'>'; echo '<h3 style="text-align:center;">Retards par équipe</h3>'; foreach($retardEquipe as $nom=>$equipe){                 if(!empty($equipe)){                          echo '<h3 style="width:500px">'.$nom.'</h3>';      echo'<table cellspacing="0" style="width:100%;border:solid 1px black;border-collapse:collapse;">';      echo '<tr><td style="width:40%;border-right:solid 1px black;border-bottom:solid 1px black;"></td>';      foreach($weekRange as $w){           echo '<td style="width:5%;border:solid 1px black;">'.$w['fdw'].'<br />'.$w['ldw'].'</td>';      }      echo '</tr>';           foreach($equipe as $nomRess=>$retard){                echo'<tr><td style="width:40%;border:solid 1px black;">'.$nomRess.'</td>';                     foreach($retard as $r){                          echo '<td style="width:5%;text-align:center;border:solid 1px black;">'.$r.'</td>';                     }                echo'</tr>';           }                      echo'</table>';      } } echo '</page>';

tromb Fichier joint : retard_OK_1.pdftromb Fichier joint : retard-KO-F.pdftromb Fichier joint : retard_KO_I.pdftromb Fichier joint : retard_OK_borderless.pdf

24

heu, petite question, ce que te génère ZEND, c'est en utf8, ou en latin1 ? car html2pdf (et fpdf) n'acceptent que du latin1. Si ca se trouve le pb vient de là.

mais en tout cas, ton pb vient certainement d'une config de zend...

dans le pire des cas, quand tu veux générer un pdf, tu crées l'html, le sauvegarde en session ($_SESSION['content_pdf'] = ....) puis redirige vers uen page hors zend qui récupère le contenu, et le transforme en pdf
Ancien pseudo : lolo

25

heu, petite question : t'avais essayé d'utiliser FPDF avant de te tourner vers HTML2PDF ? car si ca se trouve t'as une ancienne version de FPDF d'installé, et du coup HTML2PDF n'utilise pas la version incluse dans son package, et cela pourrait engendrer le pb que tu rencontres...
Ancien pseudo : lolo

26

J'avais en effet une version de FPDF dans mon dossier "lib" mais c'est la 1.6 comme pour HTML2PDF il me semble, et même en la supprimant, le problème persiste.
Et je suis en iso-8851-1, donc à priori pas de problème d'encodage.

27

Bonjour,
j'ai aussi le même problème avec les balises de style border et background, je n'utilise par contre pas Zend
Pour le border, c'est sur le border style que ça me donne un PDF vide (avec le bon nombre de page, mais vide) : si je mets juste un border-width et border-color, pas de pb (sauf que sans le 'solid', la bordure ne s'affiche pas tongue)
Pour le background, c'est la couleur.
Je travaille en utf-8 mais envoie la chaine vers html2pdf après passage dans utf8_decode. J'ai essayé sans, j'ai le meme probleme.
La visualisation html fonctionne correctement.
J'ai essayé de mettre les styles dans une feuille de style externe, dans une balise style dans le html et directement sur les balises TD, le problème est le même.

J'ai essayé d'analyser le PDF généré avec "PDF desktop rapair tool" : il trouve des erreurs mais ne les corriges pas. Il ne donne par contre pas les erreurs rencontrées :-(

Avez-vous d'autres pistes ?

28

tu utilises HTML2PDF seul ? ou est-ce que tu l'utilises dans un framework ou CMS ?
Ancien pseudo : lolo

29

Spipu (./28) :
tu utilises HTML2PDF seul ? ou est-ce que tu l'utilises dans un framework ou CMS ?

J'utilise un framework maison MVC assez simple. Par contre, j'utilise Smarty pour générer le contenu html que j'envoie à HTML2PDF (au préalable décodé avec utf8_decode). Je ai récupéré ce contenu décodé et il ne présente pas de problème de structure, validé W3C html & css.

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