PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 31-03-2012 16:25:34

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

recupérer div pour conversion pdf

Bonjour,


Tout d'abord, depuis l'index.php le visiteur peut choisir des images dans un menu et en cliquant dessus les s'afficher dans un DIV...

Maintenant je voudrais récupérer ce div et son contenu (les images) situé dans ma page index.php et les envoyer dans le code suivant (issus de html2pdf) pour générer un pdf des images.

 
<?php
$content = "";

require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content);
ob_clean();
$html2pdf->Output('images.pdf', 'D');
?>
 

Pourrait-on m'épauler sur ce coup  :-)
Merci
F.

Hors ligne

#2 31-03-2012 17:03:00

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recupérer div pour conversion pdf

Bonjour,

Pourriez-vous nous dire ce que viens faire ici ob_clean()?

Cordialement,

Jc


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 01-04-2012 08:25:18

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

Re : recupérer div pour conversion pdf

Bonjour,

Alors, n'étant pas initié à PHP et ne l'utilisant principalement qu'avec "include", je ne peux vous le dire de manière technique sad.
En revanche si je ne le mets pas alors le script de HTML2PDF ne fonctionne pas. et renvoie ceci : TCPDF ERROR: Some data has already been output, can't send PDF file
Donc après des recherches peu fructueuses pour moi, à ce sujet j'ai trouvé un post (je ne sais plus où...) où le "problème" avait été réglé ainsi. Je me doute bien que cela n'est pas top, mais bon ça me permet pour le moment de faire mes tests.

Maintenant si le script peut fonctionner sans (ce qui doit bien être le cas au départ quand même, je suppose) , je suis preneur de la correction.

Voilà, désolé de ne pouvoir mieux vous orienter là dessus.
Merci ;-)
F.

Hors ligne

#4 01-04-2012 08:45:20

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

Re : recupérer div pour conversion pdf

Re,

Finalement le problème avec "ob_clean();" est réglé. Malheureusement je ne peux pas vous dire pourquoi maintenant ça fonctionne, j'ai tout bêtement refais 2 pages : index.php et pdf.php (celle avec le script). Avec dedans le strict minimum pour s'afficher.

De là le script à fonctionné dans son originalité ?!? Tant mieux. Alors j'ai commencé à réintégrer mon code, vérifiant petit à petit que tout fonctionnait. Ainsi je me suis dit que je vais bien tomber sur ce qui cloche... Ben non, au final j'ai réintégré tout mon code à l'identique et tout fonctionne maintenant.

Voilà encore un mystère qui restera pour moi :-))

Cela dit je suis toujours à la recherche de ma solution concernant mon sujet  ;-)

Merci
F.

Hors ligne

#5 01-04-2012 09:11:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : recupérer div pour conversion pdf

Saluton,
La bufférisation de sortie est assez fréquemment utilisée par ce genre de bibliothèque avant d'éviter les problèmes avec le flux http (cf les problèmes de header already sent, etc...)
Là n'est donc effectivement pas le problème.
Par contre entre la ligne 3 de ton bout de script et la ligne 7, il doit manquer quelque chose, car là, $content ne peut contenir qu'une chaîne vide or un script doit bien à un moment donné y copier le contenu de la <div>.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 01-04-2012 13:47:33

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

Re : recupérer div pour conversion pdf

Maljuma Kris a écrit :

Par contre entre la ligne 3 de ton bout de script et la ligne 7, il doit manquer quelque chose

Je me doute bien que tout se joue à cet endroit, mais justement je ne sais pas quoi mettre sad
J'ai lu des possibilité avec innerHTML, GET/POST, header('Content-type: application/pdf'); ...
Mais je ne sais pas coder cela. Je cherche donc un bout de code à insérer à cette endroit pour appeler ma div et son contenu.

Merci,
F.

Hors ligne

#7 01-04-2012 20:59:47

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recupérer div pour conversion pdf

Bonjour,

Merci pour les explications concernant ob_clean() et je suis ravi que vous ayez trouvé la solution pour vous en passer wink
Vous ne pourrez pas appeler le contenu de votre div à cet endroit. Si lorsque vous appelez votre lib PDF votre page est déjà chargée, il vous faut passer par une fonction javascript avec un appel AJAX ou via un formulaire PHP.
Concernant l'ajax, vous récupérerez le contenu de votre div via


// En jquery
$("#id-de-la-div-concernee").html();
// en js
var contenu=document.getElementById("id-de-la-div-concernée").innerHTML;
 

Ensuite dans le fichier PHP du traitement ajax, vous appelez votre lib PDF en passant la valeur de contenu en paramètre de votre fonction d'appel.

++

Dernière modification par Jc (01-04-2012 21:01:15)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#8 02-04-2012 15:43:15

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

Re : recupérer div pour conversion pdf

Bonjour,

Je ne connais rien à JS et jquery du coup je ne comprend rien à tout ça big_smile
Il n'y aurait pas un exemple quelque part ou un tuto à partir duquel je pourrais mieux comprendre ?

Merci ;-)
F.

Hors ligne

#9 02-04-2012 16:41:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recupérer div pour conversion pdf

Bonjour

Admettons que sur ta page html index.html tu aies ton formulaire que tu souhaites sortir en PDF.
Quelque part dessus tu auras un bouton


<!-- code div dont on souhaite récupérer le contenu HTML dans le PDF : ici le contenu HTML = <span>bla bla bla</span> -->
<div id="divPDF"><span>bla bla bla</span></div>
<!-- ... -->
<button onclick="printPDF()">Impression PDF</button>
<!-- ... -->
 

Ensuite dans la page index.html on fait soit un include de fichier javascript dans le header qui s'appele par exemple traitements.js ou alors dans une balise <script>  </script> dans le fichier html, et on y place le code suivant


function printPDF(){
 var contenu=$("#divPDF").html();
$.ajax({
     url:"traitement_ajax.php",
     type:"post",
     data: { fn:"printPDF",message:contenu,sid: Math.random() },
     complete: function (xhr,result){
           var msg=xhr.responseText;
           if (msg==="ok"){alert("L'impression PDF s'est déroulée correctement");return;}      
     }
});
}
 

Ici on a donc une fonction basique qui se contente d'appeler en ajax le fichier traitement_ajax.php (dans le même répertoire que tous les fichiers de l'exemple) et de lui passer en message le contenu HTML de la div.


// fichier traitement_ajax.php
// il doit contenir au moins les instructions suivantes
if isset($_POST['fn']){$fn=$_POST['fn'];}else{$fn="";}
if isset($_POST['message']){$msg=$_POST['message'];}else{$msg="";}
if ($fn==="printPDF"){
   require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
   $html2pdf = new HTML2PDF('P','A4','fr');
    // vous mettez ici votre code de traitement pour générer le fichier PDF
   // le contenu de la div est disponible ici via la variable $msg
   $html2pdf->WriteHTML($msg);
   $html2pdf->Output('images.pdf', 'D');
  print "ok"; // si pas d'erreur dans le traitement
}
 

En espérant vous avoir aidé.

Jc

Dernière modification par Jc (02-04-2012 16:51:57)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#10 03-04-2012 15:56:41

fuerchan
Membre
Inscription : 31-03-2012
Messages : 6

Re : recupérer div pour conversion pdf

Bonjour,

1) J'ai placé le code jquey dans le head de ma page index.php, changé #divPDF par l'ID de ma div.
2) Pacé ma div et le bouton dans un <form> </form>
3) Placé le code php tout seul dans une page nommée traitement_ajax.php.
4) Le tout en racine.

Mais quand je clique sur le bouton il ne se passe rien.

Merci ;-)
F.

Dernière modification par fuerchan (13-10-2012 06:47:55)

Hors ligne

#11 03-04-2012 19:16:54

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : recupérer div pour conversion pdf

salut,

il manque une truc du genre : <script type="text/javascript" src="jquery.js"></script>

a++

Hors ligne

#12 03-04-2012 21:47:24

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recupérer div pour conversion pdf

Bonjour,

Oui en effet j'ai pas tout détaillé, je me suis contenté de donner la trame principale.
Pierrot à notamment raison, si tu utilises la bibliothèque jquery il te faut la déclarer comme il a indiqué dans le <head></head> de ta page. Tu la trouvera sur le site officiel de jquery : jquery.com
Ensuite, il est délicat d'utiliser un bouton piloté par js dans un formulaire sans qu'il rentre en conflit avec le bouton submit du formulaire. Donc le conseil que je te donne est de ne pas utiliser de balise <form> pour une solution javascript étant donné que tu débutes.

++

Dernière modification par Jc (03-04-2012 21:47:55)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums