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 :
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());
  }
}
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
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);
    }
   }
  );
}
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
 
%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 <<
Mon routing.xml :
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 ;-) ?