Générer un pdf dans une pop-up
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:
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:
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:
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:
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 ;-) ?