1

bonsoir,

j'aimerai savoir comment créer un pdf à partir d'une div dont le contenu est généré dynamiquement.
je désirerais que l'on clique sur un lien (image) pour la génération
il s'agit d'un cms et la div est:


<div id="main">
<?php echo $zite->content['main'] ?>
</div>


merci
++ vyk

PS: le script est-il compatible php5?


2

En java, j'aurais pu te dire qu'il y a un framework qui fait ça, mais en php, ça ne me dit rien...
Rest... In... Peace

3

davyk (./1) :
le script est-il compatible php5?

il faut lire les changelog du read-me. cf topics/123704-nouvelle-version-html2pdf-v324 :
modification pour compatibilité avec PHP 5.3.0
davyk (./1) :
j'aimerai savoir comment créer un pdf à partir d'une div dont le contenu est généré dynamiquement.
je désirerais que l'on clique sur un lien (image) pour la génération
il s'agit d'un cms et la div est:
<div id="main">
<?php echo $zite->content['main'] ?></div>


il faudrait également lire les exemples.... j'ai l'impression que tu est venu direct sans regarder ce qu'il y a dans le pack...
$contentHTML = '<div id="main">'.$zite->content['main'].'</div>';
Ancien pseudo : lolo

4

non, non, je t'assures que j'ai regardé les exemples du dernier package, d'ailleurs c'est vrai que cette lib est géniale wink mais quand je vois 17 fichiers d'exemples sans nom explicite ni sans savoir quoi chercher, ça me rend quelque peu perplexe..

donc, si j'ai bien compris, je dois remplacer l'habituel $content par ton $contentHTML (ce qui me permettrais d'éviter de foutre le bronx dans le fichier principal de ZitePlus (mon CMS) qui contient déjà plusieurs ob_start() )

pourrais-tu m'aider (sans abuser de ta bonté bien sûr) à placer convenablement le code dans le template?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <?php echo ($zite->rewrite===2?'<base href="'.$zite->rewritebase.'"/>':"") ?> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><?php echo $zite->content['menu_title'].', '.$zite->get_data('site_title') ?></title> <META NAME="description" CONTENT="<?php echo $zite->content["page_desc"];?>"> <META NAME="keywords" CONTENT="<?php echo $zite->content["page_keyword"];?>"> <link href="<?php echo $zite->config['files_style'] ?>" rel="stylesheet" type="text/css" /> </head> <body>      <div id="page">           <div id="top">                <h1><?php echo $zite->get_data('site_title') ?></h1>                <h2><?php echo $zite->get_data('site_subtitle') ?></h2>           </div>           <div id="mid">                <div id="side">                     <?php echo $zite->content['menu'] ?>                                    </div>                <div id="main">                     <?php echo $zite->content['main'] ?>                </div>                <div id="break"></div>           </div>           <div id="bot">Site motorisé par <a href="http://www.giausserand.fr/index.php?perma=ziteplus"> <?php echo ZITEVER ?></a></div>      </div> </body> </html>

pour le lien vers la génération du pdf, je pense utiliser celle que tu as dans l'exemple 9; j'espère être sur la bonne piste avec html2pdf car ça fait quelques jours que je ne dors plus trop à force d'essayer toutes les libs que j'ai pu trouver: fpdf, dompdf, tcpdf,..

merci déjà pour l'aide que tu m'as apporté.

cordialement, vYk

5

davyk (./4) :
donc, si j'ai bien compris, je dois remplacer l'habituel $content par ton $contentHTM


oui en effet, c'est tout à fait ca smile

ce que tu peux faire, c'est la chose suivante :

<?php
if (isset($_GET['export_pdf']))
{
  $contentHTML = '<div id="main">'.$zite->content['main'].'</div>';
  // code pour convertir avec html2Pdf : writehml, output
  exit;
}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo ($zite->rewrite===2?'<base href="'.$zite->rewritebase.'"/>':"") ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $zite->content['menu_title'].', '.$zite->get_data('site_title') ?></title>
<META NAME="description" CONTENT="<?php echo $zite->content["page_desc"];?>">
<META NAME="keywords" CONTENT="<?php echo $zite->content["page_keyword"];?>">
<link href="<?php echo $zite->config['files_style'] ?>" rel="stylesheet" type="text/css" />
</head>

<body>
     <div id="page">
          <div id="top">
               <h1><?php echo $zite->get_data('site_title') ?></h1>
               <h2><?php echo $zite->get_data('site_subtitle') ?></h2>
          </div>
          <div id="mid">
               <div id="side">
                    <?php echo $zite->content['menu'] ?>
                                   </div>
               <div id="main">
                    <?php echo $zite->content['main'] ?>
               </div>
               <div id="break"></div>
          </div>
          <div id="bot">Site motorisé par <a href="http://www.giausserand.fr/index.php?perma=ziteplus"> <?php echo ZITEVER ?></a></div>
     </div>
</body>
</html>


ainsi, toute page accédée avec comme parametre _GET 'export_pdf' sera converti en pdf
Ancien pseudo : lolo

6

tout d'abord, merci pour ta réponse rapide.

en début de template:
<?php  if (isset($_GET['export_pdf']))  {    $contentHTML = '<div id="main">'.$zite->content['main'].'</div>';    // code pour convertir avec html2Pdf : writehml, output    require_once('http://127.0.0.1/ziteplus.0.8.3.b5/ziteplus/html2pdf/html2pdf.class.php');           $html2pdf = new HTML2PDF('P','A4', 'fr');           $html2pdf->WriteHTML($contentHTML);           $html2pdf->Output('exemple09.pdf');              exit;  }   ?>

j'ai transformer ma div comme ceci (un peu comme dans l'exemple 9):
<div id="main">                                                     <form method="get" action="">                <input type="hidden" name="export_pdf" value="">                <?php echo $zite->content['main'];?>                <input type="submit" value="Generer le PDF" >           </form>           </div>

mais ça ne passe pas, une page blanche s'affiche sans accès disque

merci de ta patience

cordialement, vYk

7

nanana ! un require doit ce faire coté serveur, pas côté client avec un http ! regarde bien les exemples sur la manière donc je fais un require wink
Ancien pseudo : lolo

8

j'avais également essayé avec :
require_once(dirname(__FILE__).'/../html2pdf/html2pdf.class.php');
mais ça ne fonctionnait pas mieux..
mon arborescence est:
->localhost ->zitebeta->ziteplus

me goure-je?


mes pages sont du type:" index.php?perma=page"

dois-je faire un rewriting pour générer des "page.html" ?


merci.

cordialement, vYk

9

dirname(__FILE__) est le répertoire ou se situe ton fichier de template. il faut donc partir de là pour arriver au répertoire ou se situe HTML2PDF

exemple : si ton template est dans /style/template, et que html2pdf est dans /lib/html2pdf/ il faudra faire '/../../lib/html2pdf/html2pdf.class.php'
Ancien pseudo : lolo

10

mon fichier template se trouvant à la racine de zite et html2pdf.class.php dans un dossier html2pdf à cette même racine, cela devrait donc donner:
require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');

(je suis en local avec easyphp)


11

ok, ça y est, ça roule avec require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php'); rotfl

me reste plus qu'à (comme si c'était facile!) savoir comment rajouter "pdf=" dans "/index.php?perma=1151951290"
ce qui donne: "/index.php?pdf=perma=1151951290"
et en rewriting "/?pdf=1151951290.html" pour que le lien se génere dynamiquement en fonction de la page sur laquelle on se trouve

avec un explode, peut-être ou une concaténation (comme ton $contentHTML ) mais je dois encore apprendre..
je sens que je vais en ch..

merci encore pour tes conseils

++ vYk

edit: concaténation Ok mais problème, il me sort toujours le même pdf, à savoir, celui de la première page, pourtant le lien change bien en fonction de la page (???)

12

j'ai fait un test avec un png transparent et j'ai méga les boules, ce mad devil fou angry de fpdf ne la gère pas!!!

je vais donc ENCORE devoir trouver une autre lib. je viens donc de perdre un jour de travail supplémentaire

dommage, ça semblai être cool ici.

merci pour l'aide

13

ah non en effet, fpdf ne gère pas le pdf transparent, mais il gère le gif transparent il me semble. et vu que le png transparent ne marche pas sous IE6...
Ancien pseudo : lolo

14

ça n'est pas pour moi, je peux contourner le problème.
en revanche si les utilisateurs lambda se mettent dans la tête de créer une page avec un png transparent dedans et qu'ils ne peuvent la sortir en pdf..
va leur expliquer pourquoi ils peuvent mettre certains format et pas d'autre, certain sont moins avancés que d'autres
et pi entre un png et un gif.. y'a quand même un sacré paquet de couleurs..

si seulement html2pdf était basé sur tcpdf...

merci beaucoup du temps passé à m'aider et bonne continuation et encore bravo pour ton travail

cordialement vYk

15

je viens de trouver la solution pour le lien, que j'utilise avec une autre lib dont je ne ferais pas de pub ici, bien entendu:

<a href="<?php echo $_SERVER['REQUEST_URI'] ?>&pdf">PDF</a>

j'ai reçu de l'aide, c'est bien naturel de rendre la pareille wink

++ vYk

[RESOLU]