A partir d'un conteneur HTML(un div ou une table ) identifié par un id j'aimerai (à l'aide de DOMPDF ) ouvrir une pop-up contenant le PDF du contenu HTML.
L'idée est de passer le contenu html au serveur qui revoie le flux PDF.
Quelqu'un a-t-il déjà développé quelque chose en ce sens ?
J'utilise jquery et ajax et j'ai trouvé DOMPDF qui me semble ok coté serveur mais je n'arrive pas à afficher en retour le pdf en retour dans une pop-up.
Voici une parti de mon code avec un exemple qui veux juste renvoyer le html static <html><body><p>test PDF</p></body></html>
Voici le code de mon action :
Coté retour ajax
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function executeHtmlToPDF(sfWebRequest $request) { $this->logMessage('-------------------------------- executeHtmlToPDF DEBUT', 'debug'); $contentHTML=$request->getParameter('contentHTML'); // non encore utilisé if ($request->isXmlHttpRequest()) { $file_dir=sfConfig::get('sf_root_dir').'/lib/vendor/dompdf/'; require_once($file_dir."dompdf_config.inc.php"); spl_autoload_register('DOMPDF_autoload'); $dompdf = new DOMPDF(); $dompdf->load_html('<html><body><p>test PDF</p></body></html>'); // htlm pour le test $dompdf->render(); return $this->renderText($dompdf->output()); } }
Un truc du style s'affiche, le header n'est donc pas de type pdf... coment le rendre de type pdf ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function showPDF(contentHTML) { var html = $.ajax ( { url: 'ajax/htmlToPDF', type: "POST", data: 'contentHTML='+contentHTML, success: function(retour){ pdf_window = window.open("/test", "pdf", "status=1,width=350,height=150"); pdf_window.document.write(retour); }, error: function(xhr, ajaxOptions, thrownError){ alert("code retour HTTP :"+xhr.status+"\n Error :"+thrownError); } } ); }
Mon routing.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 %PDF-1.3 %���� 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R /OpenAction 8 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 9 0 R >> >> /MediaBox [0.000 0.000 612.000 792.000] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj <<
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Ajax_PDF: url: /ajax/htmlToPDF.:sf_format param: { module: dossier, action: htmlToPDF, sf_format: html } requirements: sf_method: POST sf_culture: (?:fr|en)
Auriez-vous des observations, des idées pour avoir le pdf ;-) ?
Partager